技术解析

请教大神们。有个问题,日志报 no more than 1024 processes can be spawned !
0
2021-05-20 20:09:37
idczone
各位大神,公司在压力测试的时候,刚开始 Nginx 一切处理正常,突然就不在响应任何请求了。业务日志(每个域名的业务日志),没有任何数据。 error 日志里面,报 2016/11/05 00:02:41 [alert] 6787#0: no mo抗投诉服务器re than 1024 processes can be spawned ,然后 Nginx 就只剩下主进程,没有任何 worker process 了。重启以后恢复正常。
请各位大神指点一下,这个是什么问题啊。。版本是 nginx version: openresty/1.9.15.1
跪求各位解答啊!
我也没具体研究过,按照你这个日志里的说法就是 nginx 不能生产超过 1024 个 worker 进程,所以说 nginx 被你压挂了。

重启后恢复正常,还是用刚才的压力去测的话,要不了多久照样 nginx 会挂。这个负载临界点就是优化的方向了。

ulimit
另外 worker process 配置了多少?居然有 1024 个? 1024 核的服务器吗……

我们的 worker process 是配置的 24 个 。 也不清楚为什么会报这个错误。
目前分析出一个原因可能是 我们在 0 点 01 分附近,定时任务日志切割,我们大约有 60 份域名的配置文件,每次备份完一个日志路径后 会 reload nginx 。不知道 nginx 的 源码是怎么判断的。。是否可能因为压测加上 频繁 reload ,导致出现问题,如果前面的 worker 进程还在处理数据,再把 nginx reload nginx 会如何处理。如果等待之前的处理的话,可能进程大于 Nginx 默认的 1024 个进程。

60 个域名每个单独 reload ?
那怪不得。一次性全切了吧……

reload 的时候之前的 worker process 不会马上结束, 但是会生成新的 24 个 worker process, 60 次 reload 的话很容易超过 1024, 试试把 worker process 调到 16 个左右

大神,你的看法和我一样。。但是我不敢确定我的想法。。没读过源代码。。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服