讓IIS支持高并發(fā)的Web服務(wù)器常用設(shè)置
適用的Windows版本:Windows Server 2008, Windows Server 2008 R2, Windows Server 2012
1、應(yīng)用程序池(Application Pool)的設(shè)置:
- General->Queue Length設(shè)置為65535(隊(duì)列長度所支持的最大值)
- Process Model->Idle Time-out設(shè)置為0(不讓應(yīng)用程序池因?yàn)闆]有請求而回收)
- Recycling->Regular Time Interval設(shè)置為0(禁用應(yīng)用程序池定期自動回收)
2、.Net Framework相關(guān)設(shè)置
a) 在machine.config中將
<processModel autoConfig="true" />
改為
<processModel enable="true" requestQueueLimit="100000"/>
(保存后該設(shè)置立即生效)
b) 打開C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Browsers\Default.browser,找到<defaultBrowser id="Wml" parentID="Default" >,注釋<capabilities>部分,然后運(yùn)行在命令行中運(yùn)行aspnet_regbrowsers -i。
<defaultBrowser id="Wml" parentID="Default" > <identification> <header name="Accept" match="text/vnd\.wap\.wml|text/hdml" /> <header name="Accept" nonMatch="application/xhtml\+xml; profile|application/vnd\.wap\.xhtml\+xml" /> </identification> <!-- <capabilities> <capability name="preferredRenderingMime" value="text/vnd.wap.wml" /> <capability name="preferredRenderingType" value="wml11" /> </capabilities> --> </defaultBrowser>
以解決text/vnd.wap.wml問題。
3、IIS的applicationHost.config設(shè)置
設(shè)置命令:
c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000
設(shè)置結(jié)果:
<serverRuntime appConcurrentRequestLimit="100000" />
(保存后該設(shè)置立即生效)
4、http.sys的設(shè)置
注冊表設(shè)置命令1(將最大連接數(shù)設(shè)置為10萬):
reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000
注冊表設(shè)置命令2(解決Bad Request - Request Too Long問題):
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxFieldLength /t REG_DWORD /d 32768 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters /v MaxRequestBytes /t REG_DWORD /d 32768
(需要在命令行運(yùn)行 net stop http & net start http & iisreset 使設(shè)置生效)
5、針對負(fù)載均衡場景的設(shè)置
在Url Rewrite Module中增加如下的規(guī)則:
<rewrite> <allowedServerVariables> <add name="REMOTE_ADDR" /> </allowedServerVariables> <globalRules> <rule name="HTTP_X_Forwarded_For-to-REMOTE_ADDR" enabled="true"> <match url=".*" /> <serverVariables> <set name="REMOTE_ADDR" value="{HTTP_X_Forwarded_For}" /> </serverVariables> <action type="None" /> <conditions> <add input="{HTTP_X_Forwarded_For}" pattern="^$" negate="true" /> </conditions> </rule> </globalRules> </rewrite>
相關(guān)博文:遷入阿里云后遇到的Request.UserHostAddress記錄IP地址問題
注意事項(xiàng):添加該URL重寫規(guī)則會造成IIS內(nèi)核模式緩存不工作,詳見微軟的坑:Url重寫竟然會引起IIS內(nèi)核模式緩存不工作。
6、 設(shè)置Cache-Control為public
在web.config中添加如下配置:
<configuration> <system.webServer> <staticContent> <clientCache cacheControlCustom="public" /> </staticContent> </system.webServer> </configuration>
7、ASP.NET線程設(shè)置
在machine.config的<processModel>中添加如下設(shè)置:
<processModel enable="true" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" minIoThreads="50"/>
相關(guān)博文:云計(jì)算之路-阿里云上:從ASP.NET線程角度對“黑色30秒”問題的全新分析
8、修改TCP MaxUserPort限制
由默認(rèn)5000改為65534,修改方法:在注冊表 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 中添加名為MaxUserPort,類型為DWORD(32-bit),值為65534(10進(jìn)制)的項(xiàng)目并重啟計(jì)算機(jī)。
相關(guān)文章
如何設(shè)置虛擬內(nèi)存 winxp、win2003最正確的設(shè)置虛擬內(nèi)存方法
我不是說如何支持4G以上內(nèi)存的廢話,地球人都知道裝上2003SP2企業(yè)版即可支持了。很多人插了8G內(nèi)存卻發(fā)現(xiàn)系統(tǒng)無論運(yùn)行多少程序物理內(nèi)存才使用3G左右,機(jī)器隨著運(yùn)行程序的時(shí)間越來越慢,硬盤燈也一直在閃2013-06-06Jira7.10.1在Windows環(huán)境下的安裝和配置教程圖解
JIRA中配置靈活、功能全面、部署簡單、擴(kuò)展豐富。這篇文章主要介紹了Jira7.10.1在Windows環(huán)境下的安裝和配置教程圖解,需要的朋友可以參考下2018-06-06Windows Server 2019 取消默認(rèn)IE 瀏覽器安全增強(qiáng)配置的步驟
Windows Server 2019 操作系統(tǒng)打開ie瀏覽器的時(shí)候各種對話框提示,下面就為大家分享一下解決方法2022-08-08win2003系統(tǒng)服務(wù)備份與保護(hù)
1.備份系統(tǒng)服務(wù)在對系統(tǒng)服務(wù)進(jìn)行配置管理以前,對其進(jìn)行備份是相當(dāng)重要的,一旦出現(xiàn)錯(cuò)誤可以馬上恢復(fù)到正常狀態(tài)。這里,我們介紹直接備份注冊表中與服務(wù)相關(guān)的內(nèi)容。2008-04-04Windows Server 2012顯示或隱藏桌面上的通用圖標(biāo)教程圖解
Windows Server 2012與Windows Server 2008 在顯示或隱藏桌面上的通用圖標(biāo)是不同的。這篇文章通過圖文并茂的形式給大家介紹Windows Server 2012顯示或隱藏桌面上的通用圖標(biāo),感興趣的朋友一起看看吧2018-12-12