请教大神们。有个问题,日志报 no more than 1024 processes can be spawned !

2016-11-07 12:02:51 +08:00
 taoyantu
各位大神,公司在压力测试的时候,刚开始 Nginx 一切处理正常,突然就不在响应任何请求了。业务日志(每个域名的业务日志),没有任何数据。 error 日志里面,报 2016/11/05 00:02:41 [alert] 6787#0: no more than 1024 processes can be spawned ,然后 Nginx 就只剩下主进程,没有任何 worker process 了。重启以后恢复正常。
请各位大神指点一下,这个是什么问题啊。。版本是 nginx version: openresty/1.9.15.1
跪求各位解答啊!
3689 次点击
所在节点    NGINX
7 条回复
sfwn
2016-11-07 13:33:34 +08:00
我也没具体研究过,按照你这个日志里的说法就是 nginx 不能生产超过 1024 个 worker 进程,所以说 nginx 被你压挂了。
sfwn
2016-11-07 13:34:41 +08:00
重启后恢复正常,还是用刚才的压力去测的话,要不了多久照样 nginx 会挂。这个负载临界点就是优化的方向了。
rrfeng
2016-11-07 14:13:40 +08:00
ulimit

另外 worker process 配置了多少?居然有 1024 个? 1024 核的服务器吗……
taoyantu
2016-11-07 14:36:34 +08:00
@rrfeng @sfwn 我们的 worker process 是配置的 24 个 。 也不清楚为什么会报这个错误。
目前分析出一个原因可能是 我们在 0 点 01 分附近,定时任务日志切割,我们大约有 60 份域名的配置文件,每次备份完一个日志路径后 会 reload nginx 。不知道 nginx 的 源码是怎么判断的。。是否可能因为压测加上 频繁 reload ,导致出现问题,如果前面的 worker 进程还在处理数据,再把 nginx reload nginx 会如何处理。如果等待之前的处理的话,可能进程大于 Nginx 默认的 1024 个进程。
rrfeng
2016-11-07 15:05:53 +08:00
60 个域名每个单独 reload ?

那怪不得。一次性全切了吧……
Blask
2016-11-08 10:26:43 +08:00
reload 的时候之前的 worker process 不会马上结束, 但是会生成新的 24 个 worker process, 60 次 reload 的话很容易超过 1024, 试试把 worker process 调到 16 个左右
taoyantu
2016-11-11 22:54:58 +08:00
@Blask 大神,你的看法和我一样。。但是我不敢确定我的想法。。没读过源代码。。

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

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

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

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

© 2021 V2EX