IIS服務器能支持10萬並發


服務器能支持10萬並發由於一個項目的訪問量越來越大,從原來的幾百個,增加到現在50多萬個每天,所以阿里的服務器也扛不住了,於是就想辦法,查了N多資料,總結了以下方法,才解決這問題,每天一共訪問量50多萬,並不是同時訪問,所以,提高並發數才是關鍵。


由於網站一再打不開,按照排除原因來看,數據庫連接、進程池滿了、iis並發數太高,我能想到的就只有這三種情況,於是就一個一個排除,當項目網站打不開時,同服務器其他網站都正常,內存不到30%,CUP不到20%,怎么可能打不開呢,於是我先重啟數據庫,發現仍然打不開,然后重啟進程池,還是打不開,最后我重啟iis,這次好了,秒開。看來是iis並發數搞得鬼,於是就查微軟資料,發現,win2008默認的並發數是5000,我想這哪夠啊,就想到如下方法,按步驟來:


步驟一:
首先設置進程池

要點:把隊列長度調整到65535,禁止重疊回收,最大故障數改成65530,這三點必須要改,不然實現不了10萬並發效果
步驟二:
調整IIS 的appConcurrentRequestLimit設置
在開始--》運行--》輸入:c:\windows\system32\inetsrv\appcmd.exe set config /section:serverRuntime /appConcurrentRequestLimit:100000--》回車
即可,然后可通過在運行中輸入%systemroot%\System32\inetsrv\config\applicationHost.config回車查詢設置結果,設置后就會出現下面代碼:
<serverRuntime appConcurrentRequestLimit="100000" />
步驟三:
調整machine.config中的processModel>requestQueueLimit的設置
在開始-->運行--》輸入:%systemroot%\Microsoft.Net\Framework64\v2.0.50727\CONFIG\machine.config
打開后搜索找到:<processModel autoConfig="true" />,將此替換成<processModel enable="true" requestQueueLimit="100000" />
步驟四:
在開始--》運行--》輸入下面三句代碼,然后回車,分別輸入
reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000
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
第一句將tcp並發數提高到10萬,第二和第三句防止出現解決Bad Request - Request Too Long問題,三句分別輸入,分別回車
步驟五:
啟動cmd,然后先輸入net stop http,等待完成,再輸入 net start http,等待完成,再輸入 iisreset
完成以上5步后,再重啟服務器,即可達到並發數10萬,無壓力


如果訪問量再大的話,就需要使用負載均衡、圖片和網站分離、CDN等方法。原文來源:http://club.zoomla.cn/PItem?id=13609
IIS7.5是微軟推出的最新平台IIS,性能也較以前有很大的提升,但是默認的設置配不適合很大的請求。但是我們可以根據實際的需要進行IIS調整,使其性能更佳,支持同時10萬個請求。
以下方案,通過對IIS7的配置進行優化,調整IIS7應用池的隊列長度,請求數限制,TCPIP連接數等方面,從而使WEB服務器的性能得以提升,保證WEB訪問的訪問流暢。
解決方案:
步驟一:調整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 文件。
步驟四:修改注冊表,調整IIS支持的並發TCPIP連接數
在cmd命令中運行命令:reg add HKLM\System\CurrentControlSet\Services\HTTP\Parameters /v MaxConnections /t REG_DWORD /d 100000,當然也可以手動去注冊表修改


可在注冊表中查看


至此,IIS的調整優化就完成了,可以同時支持10W個請求。
參考:
MSDN: http://technet.microsoft.com/zh-cn/library/dd425294(office.13).aspx , http://technet.microsoft.com/zh-cn/library/dd441171(v=office.13).aspx


原文來源:http://club.zoomla.cn/PItem?id=13609


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM