标签:code 7892.500353 postfix xxx start 描述符 strace 进程
服务器出现CPU占用100%,PHP-FPM日志不断显示
child xxx exited on signal 15 (SIGTERM) after xxx seconds from start
child xxx started
child xxx exited with code 0 after 0 seconds from start
说明PHP-FPM进程在不断创建子进程,但一创建就死掉了
还会有提示
seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers)
说明启动的子进程数量已经到底最大值
但通过 ps -ef |grep "php-fpm"|grep "pool"|wc -l命令统计php-fpm进程数量,却是0个,说明进程确实都是刚创建就死掉了,而且是瞬时创建的子进程数量都超过了最大值,只不过立马有死掉了
因为不停的创建进程,导致了CPU耗尽
使用strace在服务器正常的时候开始跟踪php-fpm进程,并记录时间戳
screen -S strace
strace -s 1024 -tt -T -f -o strace.log -p 某个php-fpm子进程的pid
机器死掉后重启,查看阿里云系统监控,找到CPU100%的开始时间,查看strace.log,使用行号定位到CPU100%的那段时间
less -N +行号 strace.log
发现有Too many open files的错误,说明是系统的打开文件描述符已经超过上限,PHP-FPM进程不断重启就是因为没有文件描述符可用导致的
ulimit -a #查看各类用户进程限制,发现最大打开文件描述符数量是65535
...
open files (-n) 65535
max user processes (-u) 65535
...
lsof | wc -l #查看当前已打开文件描述符数量,发现已经快到最大值了
589234
lsof |awk '{print $1}' |sort |uniq -c |sort -nr |head -n10 #查看占用文件描述符最多的10个进程
17821 crond
16784 sendmail
16765 maildrop
...
发现是crond和crond相关的邮件发送进程占用了大量文件描述符
查看邮件日志
less /var/log/maillog
发现大量报错
postfix/postdrop[16261]: warning: mail_queue_enter: create file maildrop/756739.16261: No such file or directory
说明邮件无法正常发送,postfix服务出现了邮件投递错误
systemctl status postfix #检查postfix服务状态,发现服务没有启动,且是禁用状态
systemctl start postfix #启动服务
lsof | wc -l #检查打开文件描述符数量,发现已经下降,问题解决
systemctl enable postfix #最后设置postfix自动启动
标签:code,7892.500353,postfix,xxx,start,描述符,strace,进程 来源: https://www.cnblogs.com/lbnnbs/p/15960670.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。