為了探尋IIS的最大並發數,先要做幾個假設。
1、假設最大並發數就是當前的連接數。意思是當前能承受最大的連接,那么就表明最大的並發。
2、假設IIS應用程序池處於默認狀態,更改設置將會對最大連接數產生影響。
做完假設,現在做限制,設置站點保持HTTP連接,超時設置成0,就是不會超時。在站點請求的default.aspx頁面設置線程Thread.Sleep(int.MaxValue)。
程序設置為只能啟動1800個線程,這是由於.Net單進程最大線程數好像是2000個。因此,要測試最大並發數,要需要同時開幾個測試進程。把系統虛擬內存調到最大值,線程過多會急劇占用內存。現在開始測試。
打開web站點的性能計數器,把顯示比例調成1萬。
發現到5000個連接時,IIS服務器崩潰(503錯誤),去洗了個澡,發現IIS服務器無法自己修復錯誤。又測試了幾次,發現最大並發值是8200個,但是一般到5000左右就會崩潰,有時候甚至只有1000個。
按8200個計算,一個用戶開一個瀏覽器瀏覽網頁,可能會占用2~3個連接,按兩個計算,那么IIS默認情況下,最大並發數是4000個左右。
打開應用程序池配置,把最大工作進程數調高(默認為1),能有效提高最大連接數。我記得以前看過一篇文章,講的是調到5左右比較合適。
