netstat -napo |grep "php-fpm" 和 ps aux | grep -c php-fpm 区别

2015-01-10 19:39:48 +08:00
 sixbyte

最近服务器老是502,php-fpm经常崩溃,话说看到网上的配置说“当前php-fpm数大于设置的值就要调高设置的进程数”

4G内存配置的进程数是200,但获取fpm的当前进程数在同一个博主他有2个方法:
netstat -napo |grep "php-fpm" | wc -l 我的结果是437
ps aux | grep -c php-fpm 我的结果是202

我比较相信ps aux | grep -c php-fpm的结果,但对netstat -napo |grep "php-fpm"的结果不是很理解,这是不是php-fpm的请求数?

怎样知道当前nginx的php-fpm的请求数?

5110 次点击
所在节点    PHP
4 条回复
extreme
2015-01-10 20:28:50 +08:00
ps是输出进程信息。
netstat是输出TCP, UDP以及Unix Socket的信息。
PHP FPM一般是监听TCP或者Unix Socket,用netstat可以查看已通过TCP方式或Unix Socket方式与PHP FPM建立的连接数。
由于限制的是进程数,而不是连接数,因此ps的结果比较可靠。

如果你使用Nginx,网站内容更新频率不算太高,可以考虑使用FastCGI Cache。
sixbyte
2015-01-10 20:55:53 +08:00
@extreme pm.max_children = 200 为何ps aux | grep -c php-fpm 的结果是202,超出。
那么是否调高php-fpm的进程数配置是按照ps的结果还是netstat?

谢谢回复
extreme
2015-01-10 21:30:37 +08:00
@sixbyte PHP FPM有一个MASTER进程(一般以root身份运行),另一个进程是"grep"的进程。
你应该使用:
ps aux | grep "进程名称" | egrep -v “grep|master process” | wc -l

不过如果你有多个pool的话,上面的也是不准的。
我建议使用:
ps -u "pool的执行用户" | sed "1d" | wc -l
extreme
2015-01-10 21:32:42 +08:00
@extreme 把上面的中文双引号替换为英文双引号再执行。

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

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

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

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

© 2021 V2EX