第一步:只針對maxWorkerThreads、maxIoThreads和minWorkerThreads作了修改<processModel autoConfig="false" maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50" />,發現並沒有明顯性能提高。html
第二步:針對第一步,提升了三個參數的值maxWorkerThreads="200" maxIoThreads="200" minWorkerThreads="100" 。而且修改了「每一個處理器的線程數限制」,從默認值25提升到50,順便修改了隊列長度從3000到30000。此時,性能有明顯提高。web
第三步(未執行):修改應用程序池的「最大工做進程數」,即便用IIS的Web Garden功能(多工做進程模式)。後端
總結:一開始只是提升了IIS的最大、最小線程數,可是因爲ASP的每一個處理器的線程數限制(25),因此性能並無明顯提高。後來提升了ASP的每一個處理器的線程數限制,性能纔有明顯好轉,但直接表現是站點進程的CPU和使用線程數明顯升高,致使服務器自己負載飆升。目前這種較爲粗暴的直接增大參數指標的優化方式比較適用於服務器上的單站點或者單個負載較高的站點,若是一臺服務器上有幾個負載加高的站點,會致使服務器自己資源損耗嚴重反而影響站點的處理能力,第三步的Web Garden尤其明顯。因此,應該持續壓測、觀察來找到一個較爲適合咱們服務器和站點結構的參數配置。服務器
ASP.NET 使用如下兩個配置設置來限制工做線程和完成線程所使用的最大數目︰併發
配置文件:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
修改參數: <processModel autoConfig="false" maxWorkerThreads="200" maxIoThreads="200" minWorkerThreads="100" />ide
MaxWorkerThreads參數和maxIoThreads參數隱式地乘以 Cpu 的數量。例如,若是您有兩個處理器,是如下的最大工做線程數︰高併發
<processModel minWorkerThreads="1">
minWorkerThreads = maxWorkerThreads / 2
ASP處理器限制每一個線程屬性指定的最大工做線程爲每一個 IIS 建立的處理器數。 以前的處理器使用率知足至少 50%或更高版本,應增長處理器限制每一個線程的值。 此設置可能大大會影響 Web 應用程序的可伸縮性和服務器的性能一般。 由於此屬性定義的最大能夠同時執行的 ASP 請求數,此設置應保持爲默認值,除非你 ASP 應用程序進行擴展的外部組件調用。 在這種狀況下,可能會增長處理器限制每一個線程的值。 這樣作將使要建立更多的線程,以處理更多的併發請求的服務器。 處理器限制每一個線程的默認值爲 25。 此屬性的最大建議的值爲 100。工具
若要增長處理器限制每一個線程的值,請執行如下步驟: 在鏈接窗格中,選擇 web 服務器,請單擊以選中功能視圖,而後雙擊ASP功能。性能
單擊啓動,指向全部程序,單擊管理工具,而後單擊Internet Information Services (IIS) Manager.優化
在鏈接窗格中,選擇 web 服務器,請單擊以選中功能視圖,而後雙擊ASP功能。
單擊以展開限制屬性下行爲,單擊處理器限制每一個線程,輸入所需的值線程每一個處理器限制單擊應用中操做窗格。
優化此屬性的目標是確保良好的響應時間,同時最小化 ASP 請求隊列已滿時,服務器頻率發送到客戶端的 HTTP 503 (服務器太忙) 錯誤。 若是 ASP 隊列長度屬性的值過低,則服務器將使用更高的頻率發送 HTTP 503 錯誤。 若是 ASP 隊列長度屬性的值太高,因此用戶可能會認爲,服務器沒有響應時實際上他們的請求正在等待隊列中。 經過在高流量期間觀看隊列,你應識別 web 請求高峯和低谷的模式。 記下的峯值值,並設置正上方的峯值值 ASP 隊列長度屬性的值。 使用隊列以處理短時間峯值,請確保響應時間,並限制系統,從而避免重載時持續,出現意外的峯值。 若是你沒有用於調整 ASP 隊列長度屬性的數據,將是很好的起點將隊列一對一比率設置爲線程的總數。 例如,若是每一個處理器限制對線程 ASP 屬性設爲 25,具備四個處理器 (4 * 25 = 100 線程),將 ASP 隊列長度屬性設置爲 100 並從該處優化。
若要增長隊列長度的值屬性,請按照下列步驟:
單擊啓動,指向全部程序,單擊管理工具,而後單擊Internet Information Services (IIS) Manager.
在鏈接窗格中,選擇 Web 服務器,請單擊以選中功能視圖,而後雙擊ASP功能。
單擊以展開限制屬性下行爲,單擊隊列長度,輸入所需的值隊列長度,而後單擊應用中操做窗格
IIS默認配置下采用的是單工做進程的工做模式,也就是隻啓用一個w3wp.exe進程處理全部請求,而後進程內啓用多個線程來處理併發請求,最大工做線程數由具體的操做系統和IIS來決定,當併發量大於線程數時則會讓請求排隊等待處理。這是面對高併發量,且部分請求處理耗時較長時就會形成大部分請求長期處於掛起的狀態,直接反應就是慢或者超時。
參考連接:
https://docs.microsoft.com/zh-cn/biztalk/technical-guides/optimizing-iis-performance