由于网站访问量不断提升,网站时不时出现服务500错误事件,实际服务器硬件资源仍较充足,考虑提升IIS处理能力解决问题,以下方法实测完美可行。
1、应用程序池设置
[1] 队列长度: 默认值1000,将原来的队列长度改为 65535。
[2] 启动32位应用程序:默认值False,改为True, 否则安装一些32的组建或32位的php都会出错。
[3] 托管管道模式:Integrated 或 Classsic。
闲置超时(分钟):默认20分钟,修改设长。
快速故障防护 → 已启用 :默认True,改为False。
解决PEP第一次打开PEP速度慢
回收间隔时间
使用windows server 2008 r2解决回收假死的问题
打开应用程序池 -> 高级设置 ->在“禁止重叠回收”里选择“true”,这样就有效避免了应用程序池回收假死问题。
2. 调整IIS 7的appConcurrentRequestLimit设置
由原来的默认5000改为100000。
[1] 在cmd中执行:
c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000
[2] 在%systemroot%\System32\inetsrv\config\applicationHost.config中可以查看到该设置:
3. 调整machine.config中的processModel>requestQueueLimit的设置
[1] 单击“开始”,然后单击“运行”,或者 windows + R。
[2] 在“运行”对话框中,键入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然后单击“确定”。(不同的.NET版本路径不一样,可以选择你自己当前想设置的.NET版本的config)
[3] 找到如下所示的 processModel 元素:
[4] 将 processModel 元素替换为以下值:
在machine.config中将
<processModel autoConfig="true" />
改为:
<processModel enable="true" requestQueueLimit="100000"/>
4. 修改注册表,调整IIS 7支持的同时TCPIP连接数
由原来的默认5000改为100000。在cmd中执行:
reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000
5. 运行命令使用设置生效
net stop http & net start http & iisreset
完成上述5个设置,就可以支持10万个并发请求。
6.CGI设置
本地浏览器去掉了“显示http友好错误提示”选项,显示:php-cgi.exe - FastCGI 进程超过了配置的活动超时时限
解决办法:IIS7->FastCGI设置->双击"php-cgi.exe"->"活动超时" 项默认是设置为70(秒),改为180(3分钟,此处根据需求设置可以略高~)
7。设置服务器任务计划定时重启。
8、对于PHP Fatal error: Maximum execution time of 30 seconds exceeded报错的处理
修改php.ini文件
max_execution_time = 30 ;//设置成你想要的值,单位是秒,这里我设180与CGI超时一致