適用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0
適用的Windows版本:Windows Server 2008, Windows Server 2008 R2, Windows Server 2012
1、應(yīng)用程序池(Application Pool)的設(shè)置:?
General->Queue Length設(shè)置為65535(隊(duì)列長(zhǎng)度所支持的最大值)
Process Model->Idle Time-out設(shè)置為0(不讓應(yīng)用程序池因?yàn)闆](méi)有請(qǐng)求而回收)
Recycling->Regular Time Interval設(shè)置為0(禁用應(yīng)用程序池定期自動(dòng)回收)
2、.Net Framework相關(guān)設(shè)置
a) 在machine.config中將
<processModel autoConfig="true" />
改為
<processModel enable="true" requestQueueLimit="100000"/>
(保存后該設(shè)置立即生效)
b) 打開(kāi)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問(wèn)題。
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è)置
注冊(cè)表設(shè)置命令1(將最大連接數(shù)設(shè)置為10萬(wàn)):
reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000
注冊(cè)表設(shè)置命令2(解決Bad Request - Request Too Long問(wèn)題):
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、針對(duì)負(fù)載均衡場(chǎng)景的設(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地址問(wèn)題
注意事項(xiàng):添加該URL重寫規(guī)則會(huì)造成IIS內(nèi)核模式緩存不工作,詳見(jiàn)微軟的坑:Url重寫竟然會(huì)引起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線程角度對(duì)“黑色30秒”問(wèn)題的全新分析
8、修改TCP MaxUserPort限制
由默認(rèn)5000改為65534,修改方法:在注冊(cè)表 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 中添加名為MaxUserPort,類型為DWORD(32-bit),值為65534(10進(jìn)制)的項(xiàng)目并重啟計(jì)算機(jī)。