linux中php-cgi占用cpu 100%

zijidelu 网站日志目录/home/hosts_log
日志文件有对应的网站id

zijidelu php-cgi日志目录 /usr/local/php_fcgi/logs
php-fpm.log
slow.log

查看日志文件基本上就可以解决问题了,我这边客户网站是被入侵 上传了一个php ddos文件,当然如果不是此问题可以如下查看是不是程序问题有时使用 file_get_contents函数也可能导致cpu 100%哦

在 php.ini 中,有一个参数 max_execution_time 可以设置 PHP 脚本的最大执行时间,但是,在 php-cgi(php-fpm) 中,该参数不会起效。真正能够控制 PHP 脚本最大执行时间的是 php-fpm.conf 配置文件中的以下参数:

The timeout (in seconds) for serving a single request after which the worker process will be terminated 
Should be used when 'max_execution_time' ini option does not stop script execution for some reason 
'0s' means 'off' 
<value name="request_terminate_timeout">0s</value> 
  默认值为 0 秒,也就是说,PHP 脚本会一直执行下去。这样,当所有的 php-cgi 进程都卡在 file_get_contents() 函数时,这台 Nginx+PHP 的 WebServer 已经无法再处理新的 PHP 请求了,Nginx 将给用户返回“502 Bad Gateway”。修改该参数,设置一个 PHP 脚本最大执行时间是必要的,但是,治标不治本。例如改成 <value name="request_terminate_timeout">30s</value>,如果发生 file_get_contents() 获取网页内容较慢的情况,这就意味着 150 个 php-cgi 进程,每秒钟只能处理 5 个请求,WebServer 同样很难避免“502 Bad Gateway”。

要做到彻底解决,只能让 PHP 程序员们改掉直接使用 file_get_contents("http://example.com/") 的习惯,而是稍微修改一下,加个超时时间,用以下方式来实现 HTTP GET 请求。要是觉得麻烦,可以自行将以下代码封装成一个函数。

<?php 
$ctx = stream_context_create(array( 
   'http' => array( 
       'timeout' => 1 //设置一个超时时间,单位为秒 
       ) 
   ) 
); 
file_get_contents("http://www.111cn.net/", 0, $ctx); 
?> 

当然相如果像dedecms生成html页面时cpu也会100%的情况哦

时间: 2025-01-02 15:22:27

linux中php-cgi占用cpu 100%的相关文章

解决linux中tracker大量占用CPU的问题

在使用fedora的过程中, 有时会发现CPU的温度会突然升高, 本来正常情况下, CPU的温度也就在39~45度左右, 然后在gnome-terminal下, 运行top命令一看, 有几个以tracker开头的进程居然占用了将近100%的CPU, 难怪CPU的温度会突然上升到60多度. 于是, 就自然想到了把这个软件卸载掉, 然而, 事实却没有这么简单. 如果卸载tracker软件, 会由于依赖关系卸载掉很多重要的软件, 比如nautilus, totem等等. 后来, 自己google一下,

linux php-cgi.exe占用cpu 100%的一次排障之旅_Linux

先说下我们网站的架构,由于目前网站访问量不是很大,但是由于最近公司网站要推广,所以将网站由单机切换成前端用nginx做负载均衡,带动两台web服务器,所有网页和静态文件都通过NFS共享调用,NFS服务装在其中的一个web服务器上,后端用mysql主从的方式,是很典型的架构. 切换成这个架构才2天,就收到nagios的报警,报警信息显示有一台web服务器负载很高,于是通过SecureCRT登录到服务器上,用top命令看了一下,发现有几个php-cgi进程占用了大量的CPU,如下: 13889 ww

服务器-mysql 占用cpu 100%

问题描述 mysql 占用cpu 100% 我的服务器配置是2核 2g的 Linux系统,安装一个淘宝客系统,这个可以采集淘宝商品,一开始采集还可以,但是当数据表里面数量达到17万以上的时候,就显得特别慢,因为他在采集的时候 要查询这个东西是不是已经被采集过,应该去每采集一次就会扫表一次,,mysql进程占用 cpu 98%以上.我不相信是服务器配置不够所照成的,因为2核2g这个配置并不是很低,而且还是Linux系统,如果17w数据都带不动,那么Linux比Windows强不了多少,还不如Win

Linux中查看进程占用内存的情况【转】

转自:http://hutaow.com/blog/2014/08/28/display-process-memory-in-linux/ Linux中查看某个进程占用内存的情况,执行如下命令即可,将其中的[pid]替换成相应进程的PID号: cat /proc/[pid]/status 说明 /proc/[pid]/status中所保存的信息除了内存信息,还包括进程IDs.信号等信息,此处暂时只介绍内存相关的信息. 字段 说明 VmPeak 进程所使用的虚拟内存的峰值 VmSize 进程当前使

websphere在生产环境占用CPU 100%问题!急!在线等

问题描述 用loadrunner8.1做压力测试才开了10个visuser就看到WAS的JAVA进程占CPU90%多,将visuser加到100后CPU占用基本保持100%,该测试脚本只验证登录用户的密码,并且在系统中已将多余的数据库操作完全去除,代码是绝对没有问题的,生产机4G内存4核的CPU,只部署了一个WAS应用,数据库应用在另外一台机,找了很多原因都无法解决,求高手帮助! 解决方案 解决方案二:CPU挂100%的原因有很多:1.Java虚拟机没有作优化.2.操作系统补丁.3.程序问题4.

httpd.exe占用cpu 100%解决办法

网上说了是我们没有限制apache的并发数与子进行数,后来百度得出下面代码 编辑httpd.conf  代码如下 复制代码 Win32DisableAcceptEx ##加入这行 ThreadsPerChild 250 MaxRequestsPerChild 0 重启apache就解决了. MaxRequestsPerChild这个指令设定一个独立的子进程将能处理的请求数量.在处理"MaxRequestsPerChild 数字"个请求之后,子进程将会被父进程终止,这时候子进程占用的内存

解决linux中Kipmi0进程对CPU使用率很高问题

google查不到多少资料,看到一篇说法:是一些平台接口的管理器.不敢贸然杀死,再查查资料. 看看专业的说法: kipmi is supposed to run with low priority. When you say it consumes 70-90% of the CPUs, is that constant (does it still consume the processor when they are other tasks in the process queue that

LINUX类主机JAVA应用程序占用CPU、内存过高分析手段

转载声明:本文为DBA+社群原创文章,转载必须连同本订阅号二维码全文转载,并注明作者名字及来源:DBA+社群(dbaplus).   做为一个IT运维人员,通常在运维过程中会遇到各种各样的问题,系统问题.应用问题.程序问题,而在这当中必然会涉及到性能问题,当用户量过大,或者服务器性能不足以支持大用户量,但同时又得不到扩容的情况下,进行性能分析,并对系统.应用.程序进行优化则显得尤为重要,同时也是节省资源的一种必不可少的手段,目前大多数的运维产品都是基于JAVA语言开发的,下面我给大家介绍一下在l

【原创】CPU 100%+磁盘写满 问题排查

情景:测试人员在进行 RabbitMQ 服务器问题排查时,进行了各种重启操作,之后突然发现机器变的很卡. 排查过程:  1.通过 top 查看,发现名为 sa 的进程 CPU 占用率几乎 100% . 2.查看 sa 进程中哪个线程占用 CPU 比较高  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [root@rmq_2 ~]# top -Hp 1362 top - 05:36:26 u