1. 程式人生 > >優化IIS7.5支持10萬個同時請求的配置方法

優化IIS7.5支持10萬個同時請求的配置方法

blank off mic runtime 命令 microsoft 技術 處理 優化

通過對IIS7的配置進行優化,調整IIS7應用池的隊列長度,請求數限制,TCPIP連接數等方面,從而使WEB服務器的性能得以提升,保證WEB訪問的訪問流暢

通過對IIS7的配置進行優化,調整IIS7應用池的隊列長度,請求數限制,TCPIP連接數等方面,從而使WEB服務器的性能得以提升,保證WEB訪問的訪問流暢。

IIS7.5是微軟推出的最新平臺IIS,性能也較以前有很大的提升,但是默認的設置配不適合很大的請求。但是我們可以根據實際的需要進行IIS調整,使其性能更佳,支持同時10萬個請求。

以下方案,通過對IIS7的配置進行優化,調整IIS7應用池的隊列長度,請求數限制,TCPIP連接數等方面,從而使WEB服務器的性能得以提升,保證WEB訪問的訪問流暢。

今天下午17點左右,博客園博客站點出現這樣的錯誤信息:

Error Summary:

HTTP Error 503.2 - Service Unavailable
The serverRuntime@appConcurrentRequestLimit setting is being exceeded.

Detailed Error Information:

Module IIS Web Core
Notification BeginRequest
Handler StaticFile

Error Code 0x00000000

由於之前使用的是默認配置,服務器最多只能處理5000個同時請求,今天下午由於某種情況造成同時請求超過5000,從而出現了上面的錯誤。

為了避免這樣的錯誤,我們根據相關文檔調整了設置,讓服務器從設置上支持10萬個並發請求。

具體設置如下:

1. 調整IIS 7應用程序池隊列長度

由原來的默認1000改為65535。

IIS Manager > ApplicationPools > Advanced Settings

Queue Length : 65535

技術分享

2. 調整IIS 7的appConcurrentRequestLimit設置

由原來的默認5000改為100000。

c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

在%systemroot%\System32\inetsrv\config\applicationHost.config中可以查看到該設置:

<serverRuntime appConcurrentRequestLimit="100000" />

技術分享

技術分享


3. 調整machine.config中的processModel>requestQueueLimit的設置

1、單擊“開始”,然後單擊“運行”。

2、在“運行”對話框中,鍵入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然後單擊“確定”。(不同的.NET版本路徑不一樣,你可以選擇你自己當前想設置的.NET版本的config)

對於.net2.0對應的是

notepad %systemroot%\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config

.4.0

notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config

3、找到如下所示的 processModel 元素:<processModel autoConfig="true" />

4、將 processModel 元素替換為以下值:<processModel enable="true" requestQueueLimit="100000" />

技術分享

5、保存並關閉 Machine.config 文件。
由原來的默認5000改為100000。


<configuration>
<system.web>
<processModel enable="true" requestQueueLimit="100000"/>參考文章:http://technet.microsoft.com/en-us/library/dd425294(office.13).aspx

4. 修改註冊表,調整IIS 7支持的同時TCPIP連接數

由原來的默認5000改為100000。

reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000

技術分享

可在註冊表中查看

技術分享

5. 運行命令使用設置生效

net stop http & net start http & iisreset 完成上述4個設置,就可以支持10萬個並發請求,博客園博客服務器已經啟用上述設置。

解決方案:

步驟一:調整IIS的應用程序池隊列長度。
在【應用程序池】列表中,選擇你相應網站所使用的應用程序池,將原來的隊列長度由1000改為65535。當然這裏的隊列長度你可以根據自己的訪問用戶*1.5來設置,例如:你有2000用戶,你此處就可以設置為3000(3000=2000用戶數*1.5), 官方參考

設置如下圖:

技術分享

步驟二:調整IIS的appConcurrentRequestLimit值

打開cmd命令,運行命令:c:\Windows\System32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000

技術分享

步驟三:修改ASP.NET請求隊列限制即調整machine.config中的processModel>RequestQueueLimit

1、單擊“開始”,然後單擊“運行”。

2、在“運行”對話框中,鍵入 notepad %systemroot%\Microsoft.Net\Framework64\v4.0.30319\CONFIG\machine.config,然後單擊“確定”。(不同的.NET版本路徑不一樣,你可以選擇你自己當前想設置的.NET版本的config)

3、找到如下所示的 processModel 元素:<processModel autoConfig="true" />

4、將 processModel 元素替換為以下值:<processModel enable="true" requestQueueLimit="15000" />

技術分享

5、保存並關閉 Machine.config 文件。

技術分享

優化IIS7.5支持10萬個同時請求的配置方法