php原因导致cpu100%怎么办

php原因导致cpu100%的解决办法:1、找出CPU使用率高的进程PID;2、跟踪进程并修改有可疑的PHP代码;3、配置“PHP-CGI”的进程数;4、通过监控与自动恢复的脚本保证服务的正常运转即可。

php原因导致cpu100%怎么办

本教程操作环境:windows7系统、PHP8.1版、Dell G3电脑。

php原因导致cpu100%怎么办?

PHP-FPM进程CPU 100%的原因及解决方案

近有服务器不时出现的CPU使用率超高,内存几乎被吃光,系统甚至自动kill掉一些进程,如sshd,vsftpd等。用top查看,PHP-CGI进程高挂不下,如下是解决方案:

立即学习“PHP免费学习笔记(深入)”;

一、进程跟踪

# top //找出CPU使用率高的进程PID# strace -p PID //跟踪进程# ll /proc/PID/fd //查看该进程在处理哪些文件

登录后复制

将有可疑的PHP代码修改之,如:file_get_contents没有设置超时时间。

二、内存分配

如果进程跟踪无法找到问题所在,再从系统方面找原因,会不会有可能内存不够用?据说一个较为干净的PHP-CGI打开大概20M-30M左右的内存,决定于PHP模块开启多少。

通过pmap指令查看PHP-CGI进程的内存使用情况

# pmap $(pgrep php-cgi |head -1)

登录后复制

按输出的结果,结合系统的内存大小,配置PHP-CGI的进程数(max_children)。

三、监控

最后,还可以通过监控与自动恢复的脚本保证服务的正常运转。下面是我用到的一些脚本:

只要一个php-cgi进程占用的内存超过 %1 就把它kill掉

#!/bin/shPIDS=`ps aux|grep php-cgi|grep -v grep|awk’{if($4>=1)print $2}’`for PID in $PIDSdoecho `date +%F….%T`>>/data/logs/phpkill.logecho $PID >> /data/logs/phpkill.logkill -9 $PIDdone

登录后复制

检测php-fpm进程

#!/bin/bashnetstat -tnlp | grep “php-cgi” >> /dev/null #2&> /data/logs/php_fasle.logif [ "$?" -eq "1" ];then #&& [ `netstat -tnlp | grep 9000 | awk '{ print $4}' | awk -F ":" '{print $2}'` -eq "1" ];then/usr/local/webserver/php/sbin/php-fpm startecho `date +%F….%T` “System memory OOM.Kill php-cgi. php-fpm service start. ” >> /data/logs/php_monitor.logfi

登录后复制

通过http检测php执行

#!/bin/bashstatus=`curl -s –head “http://127.0.0.1:8080/chk.php” | awk ‘/HTTP/ {print $2}’`if [ $status != "200" -a $status != "304" ]; then/usr/local/webserver/php/sbin/php-fpm restartecho `date +%F….%T` “php-fpm service restart” >> /data/logs/php_monitor.logfi

登录后复制

推荐学习:《PHP视频教程》

以上就是php原因导致cpu100%怎么办的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2075779.html

(0)
上一篇 2025年2月24日 08:41:09
下一篇 2025年2月19日 21:05:26

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php怎么查询字段有无

    php查询字段有无的实现方法:1、创建一个php示例文件;2、连接数据库;3、通过“select * from”语句查询某值;4、使用“if (!mysql_num_rows($result)){…}else{…}”…

    2025年2月24日
    200
  • php怎么实现30天转换为时间戳

    php实现30天转换为时间戳的方法:1、创建一个php示例文件;2、通过“mktime(0,0,0,date(‘m’),1,date(‘Y’));mktime(23,59,59,date(&#…

    2025年2月24日
    200
  • php redis数据丢失怎么办

    php redis数据丢失的解决办法:1、找到“/etc/sysctl.conf”;2、添加“vm.overcommit_memory = 1”;3、用“sysctl -p”使配置生效;4、重启linux服务器即可。 本教程操作环境:lin…

    2025年2月24日
    200
  • php 怎么改变类型

    php改变类型的方法:1、通过(int)或(integer)转换成整形;2、通过(float),(double)或(real)转换成浮点型;3、通过(string)转换成字符串;4、通过(bool)或(boolean)转换成布尔类型;5、通…

    2025年2月24日
    200
  • php写图片不显示不出来怎么办

    php写图片不显示不出来的解决办法:1、找到并打开php.ini文件;2、找到“extension=php_gd2.dll”,并将前面的分号去掉;3、重新启动服务器;4、在绘图前清一下缓存即可。 本教程操作环境:windows7系统、PHP…

    2025年2月24日
    200
  • 怎么解决php压缩中文乱码问题

    php压缩中文乱码的解决方法:1、通过“composer require nelexa/zip”安装PhpZip;2、打开“ZipFile.php”;3、找到“extractTo”方法,将“is_writable”函数改掉或去掉;4、转换一…

    2025年2月24日
    200
  • pecl php 找不到怎么办

    pecl php找不到的解决办法:1、打开命令窗口;2、检查通过pecl安装php扩展的问题;3、修改为正确的安装指令即可,安装语句如“yum install php-pear php-devel pecl install swoole”。…

    2025年2月24日
    200
  • php可以不用数组函数往数组添加元素吗

    php可以不用数组函数往数组添加元素。在PHP中可以利用数组字面量“[]”来往数组尾部添加元素,语法“$数组变量名[下标]=值”,其中下标(索引值)可以是一个字符串或一个整数;注意下标值不可重复,因此不能设置为已有值。当不在方括号“[]”内…

    2025年2月24日 编程技术
    200
  • php怎么增加一天时间戳

    两种增加方法:1、直接利用strtotime()函数计算时间间隔,可将间隔后的日期以UNIX时间戳的格式返回,语法“strtotime(“+1 day”)”;2、利用time()函数计算当前时间戳,并在当前时间戳的基…

    2025年2月24日
    200
  • php yum怎么安装指定目录

    php yum安装指定目录的方法:1、执行“yum install”命令安装;2、修改“/usr/local/php/etc/php.ini”;3、运行“php-fpm”;4、配置alias;5、指定php扫描扩展的路径即可。 本教程操作环…

    2025年2月24日
    200

发表回复

登录后才能评论