php-fpm子进程莫名增多
最近两天凌晨0点 服务器经常出现大量502 从阿里云后台监控来看 基本所有正常访问用户都是返回502
昨天登了一下服务器 用netstat -napo |grep "php-fpm" | wc -l这条命令查到 php-fpm的进程数已经到达380多 (平时基本在10个左右) 目前无法排查问题 请问有什么好的方案来排查
看过php-fpm.log 无记录
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
补充:有阻塞的操作(典型的curl请求外部接口)我建议你分离到一个单独的PHP-FPM进程池并且设定curl的超时时间,以免影响主干服务,具体操作可以看 https://my.oschina.net/eechen/blog/541139
好 谢谢大神
回复
@eechen : 慢日志也开了 还是查不到问题 开了满日志 每天出问题的时候 所有的访问都会很慢所以都被记录进去了 太多了查不到 每天大概0:05 的时候 进程多三四百个的时候 cpu会被沾满 而且 没有占cpu很高的进程
php-fpm.conf里提供有慢日志记录:
slowlog = var/log/$pool.log.slow
request_slowlog_timeout = 1
以上意思就是超过1秒的操作都会记录下来,比如:
echo shell_exec('curl -I http://www.youtube.com');
[10-Mar-2016 11:07:33] [pool www] pid 11618
script_filename = /png/www/example.com/public_html/app/info.php
[0x00007fdd62f29260] shell_exec() /png/www/example.com/public_html/app/info.php:2
是这样的 网站业务比较单一 流量大部分都是seo过来的 所以最终页面基本都是同一个
index.php 开始记录时间,index.php结束纪录时间,同时记下url 看看哪个url对应的流程耗时最长,然后优化对应的业务代码
是这样的 平时都没问题 出问题的时候只有昨天凌晨和今天凌晨 并且 我重启php-fpm之后 问题瞬间就好了 在接下来的一段时间没有在产生问题 如何去排查呢
代码里有阻塞,导致进程被占用不能快速结束执行释放进程。