高cpu占用率:解决iis6下php-cgi.exe进程过多问题

服务器CPU占用率高达100%,罪魁祸首是大量的php-cgi.exe进程?这通常是PHP程序配置问题,尤其是在FastCGI模式下,StartProcesses参数值过大(例如6或更大)导致。
解决方案:
-
检查磁盘空间: 系统盘空间不足或临时文件过多(例如MySQL临时文件堆积在
C:\Windows\Temp)都可能导致系统性能下降。清理系统临时文件,必要时删除冗余文件。 谨慎操作del *.*命令,此命令会删除目录下所有文件。立即学习“PHP免费学习笔记(深入)”;
-
PHP运行模式: 虽然ISAPI模式性能更高,但本文针对FastCGI模式下的问题。如果可以,建议切换到ISAPI模式。
-
调整FastCGI配置: 修改程序配置文件中的
StartProcesses值,建议将其降低至2,观察效果。 -
服务器安全: 排查服务器是否遭受攻击。
优化FastCGI配置文件(fcgiext.ini):
Magento是一套专业开源的PHP电子商务系统。Magento设计得非常灵活,具有模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。Magento开源网店系统的特点主要分以下几大类,网站管理促销和工具国际化支持SEO搜索引擎优化结账方式运输快递支付方式客户服务用户帐户目录管理目录浏览产品展示分析和报表Magento 1.6 主要包含以下新特性:•持久性购物 - 为不同的
在Windows 2003 + IIS6 + FastCGI + PHP环境中,FastCGI模式下的PHP进程会持续占用内存,即使请求结束后也不释放给操作系统。这并非内存泄漏,而是FastCGI的机制导致。 为解决这个问题,需要调整fcgiext.ini文件中的参数。
该文件路径通常为:C:\WINDOWS\system32\inetsrv\fcgiext.ini
修改以下参数:
-
ExePath: FastCGI解析程序路径 (例如:C:\php-5.3.8-nts-Win32-VC9-x86\php-cgi.exe) -
maxInstances: 最大PHP-CGI进程数。 建议值根据服务器内存调整:- 512MB内存:
maxInstances=50 - 1GB内存:
maxInstances=80 - 2GB内存:
maxInstances=140 - 4GB内存及以上:根据实际情况调整,逐步减少观察效果。
- 512MB内存:
-
InstanceMaxRequests: 每个PHP-CGI进程处理的最大请求数。 建议值根据服务器内存调整:- 512MB内存:
InstanceMaxRequests=200 - 1GB内存:
InstanceMaxRequests=300 - 2GB内存:
InstanceMaxRequests=500 - 4GB内存及以上:根据实际情况调整,逐步减少观察效果。
- 512MB内存:
-
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000: 此环境变量与InstanceMaxRequests作用类似,建议同步修改。
参数解释:
InstanceMaxRequests 和 PHP_FCGI_MAX_REQUESTS 决定每个php-cgi进程处理的最大请求数。数值越小,进程重启频率越高,减少高内存操作的影响时间。
maxInstances 限制最大同时运行的php-cgi进程数。数值越小,总内存占用越低。
修改完成后,重启IIS。 根据服务器实际情况和访问量,逐步调整参数值,找到最佳平衡点。










