V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sixbyte
V2EX  ›  PHP

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

  •  1
     
  •   sixbyte · 2015-01-10 19:39:48 +08:00 · 4944 次点击
    这是一个创建于 3387 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近服务器老是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 条回复    2015-01-10 21:32:42 +08:00
    extreme
        1
    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
        2
    sixbyte  
    OP
       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
        3
    extreme  
       2015-01-10 21:30:37 +08:00   ❤️ 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  
       2015-01-10 21:32:42 +08:00
    @extreme 把上面的中文双引号替换为英文双引号再执行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2786 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:50 · PVG 13:50 · LAX 22:50 · JFK 01:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.