您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關ASP.NET應用程序中依賴machine.config的配置是怎么樣的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
由于ASP.NET 處理進程在machine.config配置文件中的配置為< processModel autoConfig="true" />,這意味著你的ASP.NET 應用程序使用的性能參數依賴于machine.config的配置。
下面幾個參數是自動配置的:
1. maxWorkerThreads 和 maxIoThreads
2. minFreeThreads 和 minLocalRequestFreeThreads
3. minWorkerThreads
4. maxconnection
5. executionTimeout
這幾個參數會和你的應用程序發生這樣的癥狀相關“爭用、 性能下降和死鎖進行 Web 服務請求從 ASP.NET 應用程序時”:
進行從 ASP.NET 應用程序, 調用 XMLWeb 服務時可能會遇到爭用、 性能下降和死鎖。 客戶可能報告請求停止響應 (或 " 掛起 ")或需要很長時間來執行。 如果懷疑死, 可能回收輔助進程。 應用程序事件日志中可能會收到以下消息。
如果您使用 MicrosoftInternet 信息服務 (IIS) 5.0, 會應用程序事件日志中您收到以下消息:
◆Event Type: Error
◆Event Source:ASP.NET 1.0.3705.0
◆Event Category: None
◆Event ID: 1003
◆Date: 5/4/2003
◆Time: 6:18:23 PM
◆User: N/A
◆Computer: <ComputerName>
◆Description:
aspnet_wp.exe (PID: < xxx>) was recycled because it was suspected to be in a deadlocked state.
It did not send any responses for pending requests in the last 180 seconds.
如果您使用 IIS 6.0, 會應用程序事件日志中您收到以下消息:
◆Event Type: Warning
◆Event Source:W3SVC-WP
◆Event Category: None
◆Event ID: 2262
◆Date: 5/4/2003
◆Time: 1:02:33 PM
◆User: N/A
◆Computer: <ComputerName>
◆Description:
ISAPI 'C:\Windows\Microsoft.net\Framework\v.1.1.4322\aspnet_isapi.dll' reported itself as
unhealthy for the following reason: 'Deadlock detected'.
如果您使用 IIS 6.0, 會系統事件日志中您收到以下消息:
◆Event Type: Warning
◆Event Source:W3SVC
◆Event Category: None
◆Event ID: 1013
◆Date: 5/4/2003
◆Time: 1:03:47 PM
◆User: N/A
◆Computer: <ComputerName>
◆Description:
A process serving application pool 'DefaultAppPool' exceeded time limits during shut down.
The process id was '< xxxx>'.
可能會進行對 HttpWebRequest.GetResponse 方法調用時還收到以下異常錯誤信息:
ôSystem.InvalidOperationException 有是沒有足夠的空閑線程 ThreadPool 對象以完成 operation.ö 中:
還可能在瀏覽器收到以下異常錯誤信息:
請求定時 out.ö ôHttpException (0 x 80004005):
注意 本文還適用于應用程序直接使 HttpWebRequest 請求。
原因
因為 ASP.NET 的輔助線程和完成端口線程, 調用可用于執行請求數限制可能發生此問題。
對 Web 服務調用通常, 使用一個輔助線程來執行代碼發送請求和一個完成端口線程以從 Web 服務接收回調。 但是, 如果請求重定向或需要驗證, 調用可能使用多達兩輔助和兩完成端口線程。 同時發生多個 Web 服務調用時, 因此您可消耗托管 ThreadPool。
例如, 假設 ThreadPool 僅限于 maxworkerthreads, 10, 并且當前執行所有 10 工作線程正在等待回調來執行代碼。 由于工作項排隊以 ThreadPool 阻塞線程可用之前可從不執行回調。
其他潛在源爭奪是 maxconnection 參數, System.Net 命名空間用于限制的連接數。 此限制通常, 按預期工作。 但是, 如果許多應用程序嘗試使許多請求到單個 IP 地址同時, 線程可能需要等待一個可用連接。
解決方案
Machine.config 文件以最適合您情況中要解決這些問題, 可調整以下參數:
◆maxWorkerThreads
◆minWorkerThreads
◆maxIoThreads
◆minFreeThreads
◆minLocalRequestFreeThreads
◆maxconnection
◆executionTimeout
要成功解決這些問題, 請按照下列步驟操作:
◆限制同時到大約 12 每 CPU 執行, ASP.NET 請求的數量。
◆允許 Web 服務回調用于 ThreadPool 中自由線程。
◆選擇一個適當值對于 maxconnections 參數。 根據您選擇的 IP 地址和 AppDomains 使用數。
注意:建議來限制每 CPU 12 ASP.NET 請求的數量是有點任意。 但是, 此限制已證明能夠適合大多數應用程序。
上述就是小編為大家分享的ASP.NET應用程序中依賴machine.config的配置是怎么樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。