查找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

  

二、對進程進行跟蹤查看日誌

查看進程打開的文件code

lsof -p 進程PID

查看進程在處理的文件orm

ll /proc/進程PID/fd

查看進程的內存使用狀況blog

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的慢日誌定位是哪一個文件中哪行哪一個方法慢,這樣針對性的進行優化。

相關文章
相關標籤/搜索