centos: php-fpm.init 为什么必须加 ulimit -n 1048576 才可以大量开进程?

2015-03-11 17:01:54 +08:00
 Tianpu
在/etc/security/limits.conf 已经设置* nofile 1048576 了,启动脚本不加,就必须登录下系统重启下 php 主进程才可以生效。runlevel 是 50,肯定在系统基本服务后面吧

纯粹是好奇,问题已经解决了
3256 次点击
所在节点    PHP
8 条回复
mengzhuo
2015-03-11 17:11:31 +08:00
Linux中,一切皆文件。
socket需要File descriptor 来维持。
xiparos
2015-03-11 19:20:42 +08:00
好奇问问Debian 7 Wheezy也需要这样设置才可以大量开进程么?
Tianpu
2015-03-11 19:27:27 +08:00
@xiparos 肯定需要增大限制

我的问题是limits.conf应该比php早启动 怎么会影响到 非要独立设置
xiparos
2015-03-11 19:59:02 +08:00
@Tianpu 能给我讲讲大量开进程的应用场景么,我对这块没什么概念,没理解错是网站大量访问带来的问题?或者扔篇文章让我去扫扫盲,谢谢
billlee
2015-03-11 21:07:15 +08:00
你改的是 hard limit 还是 soft limit ?
hard limit 是上限,enforced by kernel.
soft limit 是在未调用 ulimit 时的默认限制,可以用。
Tianpu
2015-03-11 21:24:31 +08:00
@billlee 都改了 可能是启动顺序的问题吧 或者是别的依赖关系 我这边php-fpm是50的优先级 属于非系统服务最高的了


@xiparos 代理 我需要每秒2000左右的并发php进程 虽然每个进程存活时间不需要很久
Tianpu
2015-03-11 21:27:03 +08:00
@billlee

# /etc/security/limits.d/90-nproc.conf
* soft nproc 1048576
root soft nproc unlimited

# /etc/security/limits.conf
* hard nproc 1048576
* soft nproc 1048576
* hard nofile 1048576
* soft nofile 1048576

该不会是nproc启动权重是90的问题吧
julyclyde
2015-03-11 22:18:40 +08:00
# 跟/etc/security/limits*没啥关系。那是由PAM调用的,是管shell的
# 才可以大量开进程是因为主进程和子进程的通信消耗了主进程的fd数量,所以会触顶

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/176122

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX