sixbyte
V2EX  ›  PHP

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

  •  1
     
  •   sixbyte · Jan 10, 2015 · 5827 views
    This topic created in 4150 days ago, the information mentioned may be changed or developed.

    最近服务器老是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的请求数?

    4 replies    2015-01-10 21:32:42 +08:00
    extreme
        1
    extreme  
       Jan 10, 2015
    ps是输出进程信息。
    netstat是输出TCP, UDP以及Unix Socket的信息。
    PHP FPM一般是监听TCP或者Unix Socket,用netstat可以查看已通过TCP方式或Unix Socket方式与PHP FPM建立的连接数。
    由于限制的是进程数,而不是连接数,因此ps的结果比较可靠。

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

    谢谢回复
    extreme
        3
    extreme  
       Jan 10, 2015   ❤️ 1
    @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
        4
    extreme  
       Jan 10, 2015
    @extreme 把上面的中文双引号替换为英文双引号再执行。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1024 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 120ms · UTC 18:58 · PVG 02:58 · LAX 11:58 · JFK 14:58
    ♥ Do have faith in what you're doing.