排查PHP服务器CPU占用率高的问题

排查PHP服务器CPU占用率高的问题通常可以通过以下步骤进行:

使用top或htop命令:这些命令可以实时显示服务器上各个进程的CPU和内存使用情况。找到CPU使用率高的进程。

查看进程日志:如果PHP-FPM或Apache等服务器进程的日志记录了具体的请求信息,可以通过查看这些日志来确定是哪个脚本或请求导致了高CPU使用。

分析慢查询:如果你的PHP应用记录了请求的执行时间,可以找到执行时间最长的查询或代码段,这可能是导致CPU高的原因。

使用xdebug和valgrind:如果你的PHP环境支持这些工具,可以使用它们来分析代码的执行情况,找出占用CPU高的原因。

优化代码:一旦确定是特定的脚本或代码段导致CPU高,需要对代码进行优化,比如减少循环次数、优化数据库查询、使用缓存等手段来提高性能。

监控PHP-FPM或Web服务器的性能指标:比如查看PHP-FPM的children数量是否足够,或者Apache的max_clients是否已满,这些都可能是导致CPU高的原因。

使用系统监控工具:可以使用第三方监控工具,比如New Relic或AppDynamics,来帮助监控和分析应用性能。

分布式部署:如果流量非常大,可以考虑通过负载均衡将请求分散到多个服务器上,减少单一服务器的负载。

升级硬件:如果经过排查后发现硬件性能已到达瓶颈,可能需要考虑升级服务器的CPU或其他硬件资源。

查看外部依赖:比如数据库或其他API服务的响应时间,也可能影响到应用服务器的CPU使用率。

这些步骤可以帮助你定位PHP服务器CPU占用高的问题,并采取相应措施进行解决。

之前碰到过php-fpmCPU高达80%-90%,特此记录下

1. 查看是否是硬件问题

  方式:top 命令

  主要查看:load average(平均负载),这是一个4核8G内存的服务器

  1分钟平均负载:2.32;

  5分钟平均负载:2.18;

  15分钟平均负载:3.95;

  load average 中3个数的含义,如果是1核cpu,那么不能超过1,4核那么就不能超过4,15分钟可以代表长期,5分钟代表中期,1分钟代表短期,所以先看15分钟

  大神详解load average

  可以说它现在的平均负载接近了它的cpu总核数:4;需要考虑服务器配置升级!

2.查看是否是PHP-fpm的进程数过多

  首先使用 free -m 指令查看当前服务器执行状况:

  

  可以看到我的内存消耗不多,也能看到我是2G内存

  然后再用 top 命令 m 参数 查看内存情况

  再使用:ps auxw|head -1;ps auxw|sort -rn -k4|head -40 查看消耗内存最多的前40个进程

**  查看通过命令查看服务器上一共开了多少的 php-cgi 进程:ps -fe |grep ``"php-fpm"``|grep ``"pool"``|wc -l**

**  查看已经有多少个php-cgi进程用来处理tcp请求:netstat -anp|grep ``"php-fpm"``|grep ``"tcp"``|grep ``"pool"``|wc -l**

设置PHP-FPM的进程数:vi /etc/php-fpm``.d``/www``.conf(根据实际情况变化)找到 pm.max_children 字段,设置一个合理的值,比之前的小

  pm.max_spare_servers : 该值表示保证空闲进程数最大值,如果空闲进程大于此值,此进行清理 pm.min_spare_servers : 保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程;

  这两个值均不能不能大于 pm.max_children 值,通常设置 pm.max_spare_servers 值为 pm.max_children 值的60%-80%。

  正常情况下,一个php--fpm占用内存20~30M

3.进程跟踪

1.使用 top 找出CPU最高的进程pid

   2.strace -p PID(进程数) 来跟踪进程

  3. ll /proc/PID/fd 来查看该进程在处理哪些文件

  最后修改对应代码

记得重启

相关推荐
拔剑纵狂歌4 小时前
ClickHouse system.query_log 字段详解与排障实践
后端·clickhouse·1024程序员节
比奥利奥还傲.13 天前
哪吒监控面板实战:部署 Dashboard、接入 Agent、钉钉告警,再配置固定公网访问
网络·人工智能·分布式·1024程序员节
默 语14 天前
Java新手入门:从零开始安装JDK并配置环境变量
java·开发语言·python·mysql·group by·1024程序员节·数据去重
学传打活1 个月前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续3)
微信公众平台·1024程序员节·汉字·昆仑正义文化
学传打活1 个月前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng1681 个月前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心1 个月前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u0103055272 个月前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u0103055272 个月前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝2 个月前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节