瑞策系统之家 - 最好的系统光盘下载网站!

当前位置:首页 > 系统教程 > Linux教程 > 详细页面

Linux下php-cgi占用100%内存的解决方案

时间:2021-12-07 来源:瑞策系统之家--_Win10系统_Windows7旗舰版_最新GhostXP Sp3系统下载

当使用Linux系统时,计算机会变得非常卡住。发现php-cgi进程占用cpu。既然入住率已经达到100%,出现这种情况的原因是什么?下面小编介绍一下php-cgi在Linux系统中占用100% cpu的解决方案。

Linux下php-cgi占内存100%的解决方法

网站日志目录/主页/hosts_log。

日志文件有相应的网站id。

Php-cgi日志目录/usr/local/php_fcgi/logs。

php-fpm.log

慢日志

基本上,这个问题可以通过检查日志文件来解决。网站被入侵后上传了一个php ddos文件。当然,如果不是问题,可以如下检查是否是程序问题。有时,使用file_get_contents函数也可能导致cpu 100%。

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

为单个请求提供服务的超时时间(以秒为单位),超过该时间后工作进程将被终止

当“max _ execution _ time”ini选项由于某种原因没有停止脚本执行时,应使用该选项

“0s”表示“关”

《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”。

要彻底解决这个问题,只能改掉直接使用file_get_contents的习惯,而是稍微修改一下,增加一个超时,按照下面的方式实现HTTP GET请求。如果觉得麻烦,可以自己把下面的代码打包成一个函数。

《?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

$ctx=stream_context_create(数组(

http'='数组(

超时'=" 1//以秒为单位设置超时。

)

)

);

file _ get _ contents(" http://www.111cn.net/", 0,$ CTX);

?》

当然,如果你生成像dedecms这样的html页面,cpu将是100%。

这里介绍一下Linux下php-cgi进程占用100% cpu的解决方案,还有一种可能是中毒,需要杀毒处理。

相关信息

  • Linux系统xinetd服务启动失败怎么办?

    不少用户在Linux系统下安装ftp后,突然发现xinetd服务启动不了了,并出现错误提示xinetd:unrecognized service,当出现这个错误提示的时候说明系统未安装xinetd包,下面随小编一起来...

    2021/12/06

  • Linux外壳如何调用另一个脚本文件

    很多Linux用户不知道shell不仅能够编辑脚本,还能在脚本上调用另一个脚本文件,包括php文件,那么具体应该如何调用呢?下面小编就给大家介绍下Linux shell调用另一个脚本文件的方法...

    2021/12/06

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载

公众号