限制php-cgi进程数量,php-fcgi进程数超过预设值问题的解决
现象:
某日和开发的同事调试服务器php状态时候发现下面这种情况:
ps aux |grep php-fcgi |wc -l
602
表面上看是没什么问题,可是我明明记得 php-fcgi我只开了300个啊!难道有人改过了?
立刻查看 php-fpm.conf 找到这一项
300
确实是300个啊~~,怎么会有600个?
ps aux |grep php-fcgi |more
www 11707 0.0 0.7 250192 3888 ? S 17:07
www 11708 0.0 0.7 250192 3888 ? S 17:07
www 11709 0.0 0.7 250192 3888 ? S 17:07
www 11710 0.0 0.7 250192 3888 ? S 17:07
www 11711 0.0 0.7 250192 3888 ? S 17:07
状态都正常啊,奇怪了。尝试把 php-fcgi重启一下
/usr/local/php-fcgi/sbin/php-fpm restart
Shutting down php_fpm . done
Starting php_fpm done
再次查看
ps aux |grep php-fcgi |wc -l
602
还是多了300个.....奇怪了,这三百个是怎么来的呢?
因为我们的php和nginx是一起的,所以我又想到了nginx。
在访问量不高的时候偷偷重启了一下nginx
/etc/init.d/nginx restart
停止 nginx: [确定]
Shutting down php_fpm done
启动 nginx: [确定]
Starting php_fpm done
再次查看,我倒.....真服了。我和开发的同事都一头雾水
ps aux |grep php-fcgi |wc -l
602
这回不能简单的考虑重启服务了,需要想想到底是哪里出的问题,而且这是生产服务器不能随便弄。
因为现在线上的服务都还算正常,这个问题我们就先放下了。
第二天,那个同事跟我说。那个问题他知道怎么解决了,而且也知道是什么原因造成的。我赶紧问清楚:
原来是这样,最近因为测试比较频繁,对nginx服务重启次数较多。不知道哪次重启时候失败导致 nginx进程虽然停止了,
但是一起的300个php-fcgi却没有重启,导致这些进程还留在内存里不能被释放。需要强制手动杀掉所有的php-fcgi进程后再重启php-fpm就可以了。
听到这里我恍然大悟。马上去服务器上操作,果然问题解决了,具体步骤如下
pkill php-cgi
再次查看
ps aux |grep php-fcgi |wc -l
1
好了没有了,赶紧重启,因为现在访问网页已经是 502了。
/usr/local/php-fcgi/sbin/php-fpm restart
Shutting down php_fpm warning, no pid file found - php-fpm is not running ?
Starting php_fpm done
再次查看进程数
ps aux |grep php-cgi |wc -l
302
好了,正常了,呵呵
后来我在试验机上面又测试了一下,果然重现了那个问题
[root@ime /]# /etc/init.d/nginx restart
停止 nginx: [确定]
Shutting down php_fpm done
启动 nginx: [确定]
Starting php_fpm done
[root@ime /]# ps aux |grep php-cgi|wc -l
302
这时进程数是正常的,下面杀掉nginx进程
[root@ime /]# pkill nginx
[root@ime /]# lsof -i:80
[root@ime /]# ps aux |grep php-cgi|wc -l
302
这300个进程就傻乎乎的留在这里了,再次启动nginx
[root@ime /]# /etc/init.d/nginx start
启动 nginx: [确定]
Starting php_fpm done
[root@ime /]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
nginx 14072 root 8u IPv4 64090 TCP *:http (LISTEN)
nginx 14073 www 8u IPv4 64090 TCP *:http (LISTEN)
[root@ime /]# ps aux |grep php-cgi|wc -l
603
php-fcgi没有去理会在内存中存在的进程,继续开启了300个...
我如果再重复这个过程呢?
[root@ime /]# pkill nginx
[root@ime /]# lsof -i:80
[root@ime /]# /etc/init.d/nginx start
启动 nginx: [确定]
Starting php_fpm done
[root@ime /]# pkill nginx
[root@ime /]# lsof -i:80
[root@ime /]# ps aux |grep php-cgi|wc -l
904
900个... 继续重复
[root@ime /]# /etc/init.d/nginx start
启动 nginx: [确定]
Starting php_fpm done
[root@ime /]# ps aux |grep php-cgi|wc -l
954
[root@ime /]# ps aux |grep php-cgi|wc -l
1205
机器开始变慢了,估计再重复几次机器就会挂掉了...
[root@ime /]# pkill php-cgi
[root@ime /]# ps aux |grep php-cgi|wc -l
5
[root@ime /]# ps aux |grep php-cgi|wc -l
5
[root@ime /]# ps aux |grep php-cgi|wc -l
1
[root@ime /]# /etc/init.d/nginx restart
停止 nginx: [确定]
Shutting down php_fpm warning, no pid file found - php-fpm is not running ?
启动 nginx: [确定]
Starting php_fpm done
[root@ime /]# ps aux |grep php-cgi|wc -l
302
好了,恢复正常....
看来需要修改一下 php-fpm的启动脚本了
限制php-cgi进程数量,php-fcgi进程数超过预设值问题的解决相关推荐
- php fcgi children,php-fcgi进程数超过预设值问题的解决
现象: 某日和开发的同事调试服务器php状态时候发现下面这种情况: ps aux |grep php-fcgi |wc -l 602 表面上看是没什么问题,可是我明明记得 php-fcgi我只开了30 ...
- PHP服务Fcgi进程及PHP解析优化
1.PHP引擎缓存加速 常见四种软件: 1.eAccelerator 2.Zendcache 3.xcache 4.apc 5.zendopcache php5.5自带 2.使用tmpfs作为缓存加速 ...
- C++进程数量的限制
C++进程数量的限制 最大理论数 可创建的实际数 最大理论数 1.每个进程都要在全局段描述表GDT中占据两个表项 1.每个进程的局部段描述表LDT都作为一个独立的段而存在,在全局段描述表GDT中要有一 ...
- update_notifier 造成nodejs进程数量增长的问题
最近运维老大j哥找到我说了一个事儿:某私有化部署的线上环境nodejs进程数量多达1000+,对比公版线上环境的66个进程数显得十分诡异.并且单个nodejs进程所占用swap空间也较大,也不释放空间 ...
- linux修改可用的最大进程数量和可打开的最大文件数
cat >>/etc/security/limits.conf<<EOF * soft nproc 655350 * hard nproc 655350 * soft nofi ...
- Nachos进程数量限制128、ID号分配以及基于优先级的调度算法详解
文章目录 写在前面 运行环境配置 最大线程限制 实现可回收的线程ID机制 基于优先级的先来先服务调度算法 修改完毕的nachos我已经上传了,需要的话可以点击这里下载,积分不够可以私信我,CSDN设置 ...
- php-fpm 如果dm设置为 static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。...
php-fpm未优化网友反映的问题 1.最近将Wordpress迁移至阿里云.由于自己的服务器是云服务器,硬盘和内存都比较小,所以内存经常不够使,通过ps ax命令查看后,发现启动php-fpm进程数 ...
- Python 多进程笔记 — 启动进程的方式、守护进程、进程间通信、进程池、进程池之间通信、多进程生产消费模型
1 面向过程启动多进程 Python 操作进程的类都定义在 multiprocessing 模块,该模块提供了一个 Process 类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另 ...
- 使用cat /proc/进程id/maps 查看进程内存映射
proc/<PID>/maps 查看进程的虚拟地址空间是如何使用的. 该文件有6列,分别为: 地址:库在进程里地址范围 权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有: 偏 ...
最新文章
- 对未来计算机的设想1000字,未来的世界作文1000字
- Pyhon爬虫开发:URLError的使用
- c语言 map转换成字符串数组,JSON数组形式字符串转换为ListMapString,String的几种方法...
- CDZSC_2015寒假新人(1)——基础 i
- 学习knex过程中好的参考资料整理
- UI设计师必定需要了解的sketch素材
- 只要赚钱的项目,很容易沦为资本的标的
- 微信小游戏凭什么拿走开发者 70% 的日流水?
- 2020最新文本检测算法TextFuseNet
- WPS最大的败笔是“免费用,广告弹窗”,难怪用户纷纷使用office
- linux mysql show_Linux下 MySQL Show命令的使用
- Lena,Pepper等图像,图像处理必备资料。
- 社交网络中常用数据集
- (Java-11)简单的银行账户模拟
- Android各个版本的Feature变更
- Linux基础8-TCP的面向链接(三次四次)
- FineBI与FineReport对比 1
- 凸显计算机学院特色的剧本,高职院校非计算机专业计算机课程的教学改进策略探析 - 计算机教育论文大全 - 小品台词 - 中国国际剧本网...
- 静态站点 免费_七个站点,您可以随意使用免费照片
- 基于JAVA网上图书销售系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署