在fastcgi(FCGI)+PHP的配置中,php-cgi往往比较大占内存,本文研究一下减小php-cgi占内存的方法,本文减小php-cgi占内存的原理是,尽量减小系统中的php-cgi.exe的同时运行进程数,可以减小php-cgi.exe总体占内存的数量,我们可以通过减小php-cgi重启周期来实现。
在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
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
RequestTimeout=600
ActivityTimeout=900
这里:
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
这个参数决定了一个php-cgi进程被创建出来之后,最多接受的PHP请求数,在lighttpd中默认配置是10000。也就是说这个php-cgi进程每接受10000次PHP请求后会终止,释放所有内存,并重新被管理进程启动。如果把它降低,比如改成100,那么php-cgi重启的周期会大大缩短,偶然的高内存操作造成的问题影响时间也会缩短。
一个php-cgi程序占用7-25M内存,我的占用是14-18M内存,决定于php模块开启多少。
减小php-cgi进程的同时存在数目,可以减小内存占用值,我现在用的服务器,把PHP_FCGI_MAX_REQUESTS值调整到了500,减小了php-cgi进程的数量,占用内存也减小了,反应速度比以前快了不少,至少调整到多少,可根据您的站点访问量来决定。
原创文章,作者:斑斓网站长,如若转载,请注明出处:https://www.argb.net/reduce-the-php-cgi-processes-share-memory-reducing-the-cycle-to-restart-php-cgi.html