我是靠谱客的博主 过时香烟,最近开发中收集的这篇文章主要介绍查找linux下进程占用CPU过高的原因,以php-fpm为例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

很多时候,线上服务器的进程在某时间段内长时间占用CPU过高,为了优化,我们需要找出原因。

1、找出占用CPU最高的10个进程

1

ps aux | sort -k3nr | head -n 10

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

1

ps aux | sort -k4nr | head -n 10  

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

1

top

  

2、对进程进行跟踪查看

查看进程打开的文件

1

lsof -p 进程PID

查看进程在处理的文件

1

ll /proc/进程PID/fd

查看进程的内存使用情况

1

pmap 进程PID

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

1

strace -p 进程PID

当然我们也可以查看汇总的信息

1

strace -cp 进程PID

如果我们想跟踪某进程所有的系统调用,并统计调用时间,并导出为文件,可用如下命令

1

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

  

3、查找php-fpm占用过高的原因

我们可以配置php-fpm的慢日志,查找是哪些文件导致php-fpm占用过高。

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

1

ps -ef|grep php

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

1

2

3

4

5

6

7

8

9

10

;错误日志

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

最后

以上就是过时香烟为你收集整理的查找linux下进程占用CPU过高的原因,以php-fpm为例的全部内容,希望文章能够帮你解决查找linux下进程占用CPU过高的原因,以php-fpm为例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部