IIS+PHP访问量大时内存爆满等性能问题解决方案

如今还是有许多人在用老掉牙的 IIS6 + PHP。本文解决方法适用于使用 FastCGI 运行 PHP 的用户。

问题原因:

你可以试一试,你在 VPS 上用 IIS6 安装 FastCGI 跑 PHP,并安装 WordPress。

然后你多发表一些文章,随后一直不停地按 F5,不到一分钟,你的内存就差不多爆到 85% 左右了,此时VPS开始大幅度读写虚拟内存,磁盘性能又开始下降。

最终 VPS 死机。

解决方案:

很多 VPS 提供商提供的一件环境配置包或网上现有的教程,都没有针对性能进行优化。

所以我们只需要给 FastCGI 加以限制参数,就可以解决问题。(就像在 Apache 的 httpd.conf 中的配置一样)

  • 首先,终止 IIS 的运行。
  • 然后访问这个目录:C:\WINDOWS\system32\inetsrv
  • 打开 fcgiext.ini。(建议不要使用记事本编辑,可以用 Notepad++)
  • 找到:
    [Type]
    php=PHP
    [PHP]
    ExePath=XXXXXXX
  • 在下面加入以下配置:
    ;设置 php-cgi.exe 最大的进程数
    maxInstances=30
    ;设置 php-cgi 每个进程处理多少个请求后释放
    InstanceMaxRequests=300
    ;设置 php-cgi 空闲后多少时间内退出释放资源(单位:秒)
    IdleTimeout=100

配置以后如图所示:

IIS php-cgi 的优化设置

最后只要重新启动一下 IIS 即可生效。

备注:maxInstances 的数值可以根据服务器的实际内存来调整。


10 responses to “IIS+PHP访问量大时内存爆满等性能问题解决方案”

    1. 嗯嗯,你试过了吧。

  1. 我们现在用的是Nginx+PHP-FPM

    1. 不过你的服务器速度真的好快

Leave a Reply

Your email address will not be published. Required fields are marked *