如何解决php cgi.exe 太多的问题
php cgi.exe太多的解决办法:首先检查系统盘空间;然后将PHP安装为CGI模式或者ISAPI模式;接着修改程序;最后在web服务器配置中优化fastcgi配置文件参数即可。
推荐:《PHP视频教程》
服务器大量php-cgi.exe进程,导致CPU占用100%的解决
出现该问题一般为程序方面问题,如程序采用fastcgi方式运行PHP,而程序设置的StartProcesses又偏大,如6甚至更大。
解决参考:
1.检查系统盘空间。查看系统临时文件是否过多,MySQL数据库的临时文件默认存到了c:/windows/temp,导致累积了几万甚至上百万的小文件,压垮系统盘。
del *.* 删除所有文件
2.PHP是一种广泛使用的动态脚本语言,不过在IIS中并没有内置对PHP语言的支持,因此如果需要使用PHP,必须自行安装。PHP可以安装为CGI模式或者ISAPI模式,由于ISAPI模式具有更高的性能,因此我建议大家使用ISAPI模式。
3.如能修改程序,建议将程序配置文件中的StartProcesses值缩到2,看是否改善。
4.看是否服务器有问题攻击现象。
windows 2003+IIS6中优化fastcgi配置文件fcgiext.ini,减少 PHP-cgi.exe进程数量和所占内存大小
本来听说fastcgi比isapi好就在服务器中装上了,配置环境为windows 2003+IIS6+fastcgi(FCGI)+PHP5.2.17,经过与很长一段时间观察,发现工作在FastCGI模式下的PHP会占用越来越多的内存,访问量稍微多点php-cgi进程就多了N个,同样情况下能比原来用isapi模式的时候多出几百M,我的服务器内存只有2G伤不起啊。
我在网上搜索了一下,发现还有不少人面临同样的问题。来自PHP官方的一个比较正式的解释是:php-cgi进程并没有内存泄漏,php-cgi会在每个请求结束的时候回收脚本使用的全部内存,但是并不会释放给 操作系统,而是继续持有以应对下一次PHP请求。这样做大概是为了减少内存碎片化或者解决从系统申请内存之后又释放回操作系统所需要的时间不可控问题。可是如果偶然一次PHP请求使用了诸如ftp或者zlib这样的大内存操作,那么将导致一大块系统内存被php-cgi持续占有,不能被利用。
解决这个问题的办法是在web服务器配置中优化fastcgi配置文件参数。
在C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件中可以设定php-cgi进程相关参数,如:[Types]
php = PHP
[PHP]
ExePath=C:\php-5.3.8-nts-Win32-VC9-x86\php-cgi.exe
maxInstances=100
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
RequestTimeout=600
ActivityTimeout=900
在上面的配置中:ExePath 指定了FastCGI解析程序的路径,
instanceMaxRequests 指定了每个实例可以处理的最大请求数,
maxInstances 指定可以启动的最大实例数目,
EnvironmentVars 创建了一个环境变量 PHP_FCGI_MAX_REQUESTS ,默认值设为10000,
requestTimeout 指定了请求的超时时间为600秒,
activityTimeout 指定了活动会话超时时间为900秒。
一下是建议值:maxInstances=
把这个值改小
建议512M 内存的改maxInstances=50
1G 内存的改maxInstances=80
2G 内存的改maxInstances=140
再修改InstanceMaxRequests=
把这个值改小
建议512M 内存的改InstanceMaxRequests=200
1G 内存的改InstanceMaxRequests=300
2G 内存的改InstanceMaxRequests=500
改完, 重启IIS。
instanceMaxRequests PHP_FCGI_MAX_REQUESTS 这两个参数决定了一个php-cgi进程被创建出来之后,最多接受的PHP请求数,在lighttpd中默认配置是10000。也就是说这个php-cgi进程每接受10000次PHP请求后会终止,释放所有内存,并重新被管理进程启动。如果把它降低,比如改成100,那么php-cgi重启的周期会大大缩短,偶然的高内存操作造成的问题影响时间也会缩短。
maxInstances 这个参数指定可以启动的最大实例数目,即php-cgi.exe进程的数目。如果把它降低,比如改成100,那么在任务管理器的进程中最多只有php-cgi.exe进程,php-cgi.exe所占用的总内存将大大减少。
我现在用的服务器为windows 2003操作系统,4G内存,一个php-cgi.exe程序占用7-25M内存,我把maxInstances值调为300,减少了php-cgi.exe进程的总数量,占用内存也减小了,反应速度比以前快了不少,至少调整到多少,可根据您的站点访问量来决定。
如何解决php cgi.exe 太多的问题的教程已介绍完毕,更多请关注跳墙网其他文章教程!
如何解决php cgi.exe 太多的问题相关教程
php如何替换p标签
php替换p标签的方法:首先创建一个PHP示例文件;然后通过“str_replace(array(p,,/p),,$html);”方法替换p标签即可。 推荐:《PHP视频教程》 代码示例如下: $html=pfdasf/p;echo $string = str_replace(array(p,,/p),,$html); php如何替换p标签的教程已介绍
php怎么替换字符串中的换行符
php替换字符串中的换行符的方法:可以利用php中定义好的变量PHP_EOL来进行替换,如【str_replace(PHP_EOL, , $str);】。 可以使用以下三种方法来解决: (推荐教程:php视频教程) 1、使用str_replace 来替换换行 $str = str_replace(array(\r\n, \r, \n), ,
php怎么进行中文字符转码
php进行中文字符转码的方法:【$fileName=iconv(UTF-8, gbk, $fileName);】,表示转换为gbk的中文编码格式。 通常PHP中上传文件,如果文件名称有中文字符,上传之后的名称是无法写入到本地的,因为上传来的编码格式一般是UTF-8的格式,这种格式是无法给文件
mysql中如何取月份
在mysql中可以使用MONTH()函数来获取月份,它会从指定日期值中获取月份值。MONTH()函数需要接受date参数,语法格式为“MONTH(date);”,返回指定date对应的月份,范围为“1~12”。 (推荐教程:mysql视频教程) MySQL 中 MONTH(date) 函数返回指定 date 对
php如何在不去重的情况下对数组排序
php在不去重的情况下对数组排序的方法:【$cars=array(porsche,BMW,Volvo);sort($cars);】,表示按照字母升序对数组中的元素进行排序。 函数介绍: sort() - 以升序对数组排序 rsort() - 以降序对数组排序 (推荐教程:php视频教程) 举例: 按照字母升序对
【干货】如何打造一流创业团队-创业者最实用的管理指南.pdf(附
【干货】如何打造一流创业团队-创业者最实用的管理指南.pdf(附下载链接)... 大家好,我是文文(微信:sscbg2020),今天给大家分享一份干货文档《如何打造一流创业团队-创业者最实用的管理指南.pdf》,在创业或有创业想法的伙伴们可以重点看看哦,干货满满。
vue中如何让阿里巴巴矢量图形库中Iconfont作用到content伪类中
vue中如何让阿里巴巴矢量图形库中Iconfont作用到content伪类中 (一)在阿里巴巴矢量图形库中找到自己想要的icon,加入到购物车 (二)点击购物车中,选择添加到项目,若没有项目,则新建一个,再点添加到项目 (三)此时会跳转到我的项目页面,里边有添加过
px、em与rem之间如何选择
px、em与rem之间如何选择 文章目录 px 特点 em 特点 注意 例子 rem 注意 例子 px 与 rem 的选择? px px像素(Pixel)。相对长度单位。 像素px是相对于显示器屏幕分辨率而言的。 IE无法调整那些使用px作为单位的字体大小; 国外的大部分网站能够调整的原因在