如何解决php cgi.exe 太多的问题-PHP问题

资源魔 30 0

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 php教程 cgi php故障解决 php使用问题

抱歉,评论功能暂时关闭!