nginx 子进程 woker process 启动失败的问题
问题:
重启nginx服务,worker process 子进程启动失败,启动的都是master进程:

负载急速升高(平常都是4-5),占用CPU资源多的前十进程都是nginx :

nginx 错误日志里频繁记录:
// :: [alert] #: worker process exited on signal
// :: [alert] #: worker process exited on signal
// :: [alert] #: worker process exited on signal
// :: [alert] #: worker process exited on signal
// :: [alert] #: worker process exited on signal
查看dmesg 信息:
# dmesg |grep nginx
Out of memory: Kill process (nginx) score or sacrifice child
系统内存被耗尽,导致nginx进程频繁被 kill 掉。
分析:
没重启nginx前,服务一切正常。回想昨天对nginx的配置做了优化,而没有重启nginx测试。
优化的根据如下:


网上的nginx配置优化的文章,大多建议woker_rlimit_nofile 、woker_connections、ulimit -n 的值保持一致。
出现问题的nginx配置如下:
worker_processes 32;
worker_rlimit_nofile 1024000; events {
worker_connections 1024000;
}
其实,这些参数的设置有个前提:
并发总数:max_clients = worker_processes * worker_connections
nginx做反向代理的情况下,max_clients = (worker_processes * worker_connections)/ 4 # 一般都除以4, 经验所得。 因并发受IO的约束,worker_connections 值的设置跟物理内存大小有关,max_clients 的值必须小于操作系统理论情况下可以打开的最大文件数。 而操作系统可以打开的最大文件数和内存大小成正比,查看32G内存的机器上,理论情况下,可以打开的最大文件数:
#cat /proc/sys/fs/file-max
3262366 当max_clients < `cat /proc/sys/fs/file-max` 的值时,这样在操作系统可以承受的范围内。 worker_connections 的值需根据 worker_processes 进程数和系统可以打开的最大文件总数 适当地进行设置,也就是要根据系统的CPU和内存进行配置。 当然,实际的并发总数还会受 `ulimit -n` 值的限制。
根据上述的nginx配置:
max_clients = 32 * 1024000 = 32768000 远远大于 3262366 ,因此系统的CPU、内存资源才会被nginx进程耗尽。
解决:
修改nginx配置:
worker_processes ;
worker_rlimit_nofile ; events {
worker_connections ;
}
重启nginx服务,woker process 正常生成,服务器负载下降到4-5 。
nginx 子进程 woker process 启动失败的问题的更多相关文章
- Win7 Nginx启动失败 cmd命令失败
Win7 Nginx启动失败 cmd命令失败 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服 ...
- 故障 -> nginx启动失败
描述:在用saltstack给 minion 安装 nginx 服务 时 提示 nginx 服务下载成功,但是启动失败. ---------- ID: nginx-systemctl Function ...
- 解决nginx启动时域名解析失败而导致服务启动失败的问题
问题: nginx启动或者reload的时候,会对proxy_pass后面的域名进行DNS解析,如果解析失败,启动就会失败或者reload失败. 我们是to B的产品,客户的环境可能是不通公网的,因此 ...
- Starting nginx: nginx: [emerg] bind() to 0.0.0.0:8088 failed (13: Permission denied) nginx 启动失败
Starting nginx: nginx: [emerg] bind() to 0.0.0.0:8088 failed (13: Permission denied) nginx 启动失败 ...
- 解决Nginx启动失败
一.Nginx下载http://nginx.org/en/download.html 二.Nginx启动失败原因1.本人下载的是nginx-1.12.1(稳定版),下载完解压后,进入路径中,start ...
- nginx无网络启动失败——proxy_pass域名DNS解析出错
问题: nginx启动或者reload的时候,会对proxy_pass后面的域名进行DNS解析,如果解析失败,启动就会失败或者reload失败. 我们是to B的产品,客户的环境可能是不通公网的,因此 ...
- 解决GitLab的Forbidden和Nginx启动失败
通过宝塔安装的GitLab突然出现Forbidden,原因居然是IP并发过大,IP被禁 解决方法: 登录服务器,编辑文件 /etc/gitlab/gitlab.rb ,将下面的截图内容放开注释(默认 ...
- centos7 ngxin启动失败:Job for nginx.service failed(80端口被占用的解决办法)
问题描述:(flaskApi) [root@67 flaskDemo]# service nginx start Redirecting to /bin/systemctl start nginx.s ...
- nginx启动失败(bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket...permissions)
nginx启动失败 nginx启动失败(bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a ...
随机推荐
- libz.so.1: cannot open shared object file: No such file or directory
在虚拟机安装xtrabackup工具时候出现的报错:libz.so.1: cannot open shared object file: No such file or directory [ro ...
- MeayunDB-高性能分布式内存数据库
MeayunDB(www.meayun.com)是一款分布式的NoSQL列式内存数据库,由C#编写,主要为高性能,高并发,高可伸缩及大数据系统提供技术解决方案.基于MeayunDB,可以简单,快速的构 ...
- hdu 3549 Flow Problem 【最大流】
其实还是不是很懂dinic----- 抄了一个模板--- http://www.cnblogs.com/naturepengchen/articles/4403408.html 先放在这里--- #i ...
- hdu 2795 Billboard 【线段树】
给出一个高为h,宽为w的广告板,有n张广告需要贴,从第一行开始贴,尽量靠左,输出每个广告最后贴在哪一行的 先一直想不通这样建树是为什么 后来看到一篇题解里面的一句话“直到找到一个满足条件的叶子节点” ...
- 页面定制CSS代码初探(三):设置正文最小高度
前言 没想到再次写这篇,已经过去1年半了. 现在审美也发生了改变,一开始做的样式全删了,只保留了h2的样式.原先认为界面要宽,两边留太多空很浪费,看惯了知乎和简书,觉得默认最大1000px的排版也不错 ...
- day06-1 与用户交互以及格式化输出
目录 Python的与用户交互 Python2的input和raw_input(了解) 格式化输出 占位符 format函数格式化字符串 f-string格式化(方便) Python的与用户交互 in ...
- jmeter+ant+jenkins持续集成
邮件.报告插件和jenkins的war包下载地址:链接:https://pan.baidu.com/s/1gZJ53x50bxVyEsQFjdCkog 密码:1jtz 1.下载ant 网盘地址:链接 ...
- HDU 2842 Chinese Rings( 递推关系式 + 矩阵快速幂 )
链接:传送门 题意:解 N 连环最少步数 % 200907 思路:对于 N 连环来说,解 N 连环首先得先解 N-2 连环然后接着解第 N 个环,然后再将前面 N-2 个环放到棍子上,然后 N 连环问 ...
- php5 中魔术方法函数有哪几个
魔术函数:9.3 构造函数:__construct() 9.3.1 实例化对象时被调用. 9.3.2 在类中,构造函数是用来初始化对象的,利用构造函数,可以操作对象,并改变它的值. 9.3.3 当__ ...
- 小学生绞尽脑汁也学不会的python(初识面对对象)
小学生绞尽脑汁也学不会的python(初识面对对象) 一. 面向对象思想 1. 面向过程. 重点在"过程". 按照实物的发展流程. 先干嘛,后干嘛, 最后干嘛.... 优点: 简单 ...