很多时候,线上服务器的进程在某时间段内长时间占用cpu过高,为了优化,我们需要找出原因。
1、找出占用cpu最高的10个进程
ps aux | sort -k3nr | head -n 10
或查看占用内存最高的10个进程
ps aux | sort -k4nr | head -n 10
或者使用 top ,按 1 显示cpu列表,再按 shift+p 以cpu排序
top
2、对进程进行跟踪查看
查看进程打开的文件
lsof -p 进程PID
查看进程在处理的文件
ll /proc/进程PID/fd
查看进程的内存使用情况
pmap 进程PID
通过strace来跟踪进程的系统调用
strace -p 进程PID
当然我们也可以查看汇总的信息
strace -cp 进程PID
如果我们想跟踪某进程所有的系统调用,并统计调用时间,并导出为文件,可用如下命令
strace -o 导出文件 -T -tt -e trace=all -p 进程PID
3、查找PHP-fpm占用过高的原因
我们可以配置PHP-fpm的慢日志,查找是哪些文件导致PHP-fpm占用过高。
ps -ef|grep PHP
- ;错误日志
- error_log = log/PHP-fpm.log
- ;访问日志
- access.log = log/$pool.access.log
- ;访问日志格式
- access.format = "%r - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
- ;慢日志
- slowlog = log/$pool.log.slow
- ;慢日志超时时间
- request_slowlog_timeout = 3
注意:log 目录需要我们自已创建。
我们可以通过PHP-fpm的慢日志定位是哪个文件中哪行哪个方法慢,这样针对性的进行优化。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。