查找linux下进程占用CPU太高的缘由,以php-fpm为例

不少时候,线上服务器的进程在某时间段内长时间占用CPU太高,为了优化,咱们须要找出缘由。php

一、找出占用CPU最高的10个进程服务器

ps aux | sort -k3nr | head -n 10

或查看占用内存最高的10个进程php-fpm

ps aux | sort -k4nr | head -n 10  

或者使用 top ,按 1 显示CPU列表,再按 shift+p 以CPU排序优化

top

  

二、对进程进行跟踪查看日志

查看进程打开的文件orm

lsof -p 进程PID

查看进程在处理的文件blog

ll /proc/进程PID/fd

查看进程的内存使用状况排序

pmap 进程PID

经过strace来跟踪进程的系统调用进程

strace -p 进程PID

固然咱们也能够查看汇总的信息内存

strace -cp 进程PID

若是咱们想跟踪某进程全部的系统调用,并统计调用时间,并导出为文件,可用以下命令

strace -o 导出文件 -T -tt -e trace=all -p 进程PID

  

三、查找php-fpm占用太高的缘由

咱们能够配置php-fpm的慢日志,查找是哪些文件致使php-fpm占用太高。

先找到php-fpm.conf文件位置

ps -ef|grep php

修改php-fpm.conf,并打开日志选项

;错误日志
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的慢日志定位是哪一个文件中哪行哪一个方法慢,这样针对性的进行优化。

相关文章
相关标签/搜索