博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查找linux下进程占用CPU过高的原因,以php-fpm为例
阅读量:5769 次
发布时间:2019-06-18

本文共 885 字,大约阅读时间需要 2 分钟。

很多时候,线上服务器的进程在某时间段内长时间占用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占用过高。

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

转载于:https://www.cnblogs.com/jkko123/p/10693355.html

你可能感兴趣的文章
Rainbond 5.0.4版本发布-做最好用的云应用操作系统
查看>>
Java判断是否为垃圾_Java GC如何判断对象是否为垃圾
查看>>
多项式前k项和java_多项式朴素贝叶斯softmax改变
查看>>
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
OracleLinux安装说明
查看>>
标准与扩展ACL 、 命名ACL 、 总结和答疑
查看>>
使用@media实现IE hack的方法
查看>>
oracle体系结构
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>
Proxy服务器配置_Squid
查看>>
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>
纯DIV+CSS简单实现Tab选项卡左右切换效果
查看>>
redis 常用命令
查看>>
EdbMails Convert EDB to PST
查看>>
Centos7同时运行多个Tomcat
查看>>
使用CocoaPods过程中的几个问题
查看>>
我的友情链接
查看>>
为eclipse安装maven插件
查看>>
Spring boot 整合CXF webservice 全部被拦截的问题
查看>>
Pinpoint跨节点统计失败
查看>>