這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)ASP.NET應(yīng)用程序中依賴machine.config的配置是怎么樣的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),文山州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:文山州等地區(qū)。文山州做網(wǎng)站價(jià)格咨詢:18980820575
由于ASP.NET 處理進(jìn)程在machine.config配置文件中的配置為< processModel autoConfig="true" />,這意味著你的ASP.NET 應(yīng)用程序使用的性能參數(shù)依賴于machine.config的配置。
下面幾個(gè)參數(shù)是自動(dòng)配置的:
1. maxWorkerThreads 和 maxIoThreads
2. minFreeThreads 和 minLocalRequestFreeThreads
3. minWorkerThreads
4. maxconnection
5. executionTimeout
這幾個(gè)參數(shù)會(huì)和你的應(yīng)用程序發(fā)生這樣的癥狀相關(guān)“爭(zhēng)用、 性能下降和死鎖進(jìn)行 Web 服務(wù)請(qǐng)求從 ASP.NET 應(yīng)用程序時(shí)”:
進(jìn)行從 ASP.NET 應(yīng)用程序, 調(diào)用 XMLWeb 服務(wù)時(shí)可能會(huì)遇到爭(zhēng)用、 性能下降和死鎖。 客戶可能報(bào)告請(qǐng)求停止響應(yīng) (或 " 掛起 ")或需要很長(zhǎng)時(shí)間來(lái)執(zhí)行。 如果懷疑死, 可能回收輔助進(jìn)程。 應(yīng)用程序事件日志中可能會(huì)收到以下消息。
如果您使用 MicrosoftInternet 信息服務(wù) (IIS) 5.0, 會(huì)應(yīng)用程序事件日志中您收到以下消息:
◆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:
◆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, 會(huì)應(yīng)用程序事件日志中您收到以下消息:
◆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:
◆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, 會(huì)系統(tǒng)事件日志中您收到以下消息:
◆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:
◆Description:
A process serving application pool 'DefaultAppPool' exceeded time limits during shut down.
The process id was '< xxxx>'.
可能會(huì)進(jìn)行對(duì) HttpWebRequest.GetResponse 方法調(diào)用時(shí)還收到以下異常錯(cuò)誤信息:
ôSystem.InvalidOperationException 有是沒(méi)有足夠的空閑線程 ThreadPool 對(duì)象以完成 operation.ö 中:
還可能在瀏覽器收到以下異常錯(cuò)誤信息:
請(qǐng)求定時(shí) out.ö ôHttpException (0 x 80004005):
注意 本文還適用于應(yīng)用程序直接使 HttpWebRequest 請(qǐng)求。
原因
因?yàn)?ASP.NET 的輔助線程和完成端口線程, 調(diào)用可用于執(zhí)行請(qǐng)求數(shù)限制可能發(fā)生此問(wèn)題。
對(duì) Web 服務(wù)調(diào)用通常, 使用一個(gè)輔助線程來(lái)執(zhí)行代碼發(fā)送請(qǐng)求和一個(gè)完成端口線程以從 Web 服務(wù)接收回調(diào)。 但是, 如果請(qǐng)求重定向或需要驗(yàn)證, 調(diào)用可能使用多達(dá)兩輔助和兩完成端口線程。 同時(shí)發(fā)生多個(gè) Web 服務(wù)調(diào)用時(shí), 因此您可消耗托管 ThreadPool。
例如, 假設(shè) ThreadPool 僅限于 maxworkerthreads, 10, 并且當(dāng)前執(zhí)行所有 10 工作線程正在等待回調(diào)來(lái)執(zhí)行代碼。 由于工作項(xiàng)排隊(duì)以 ThreadPool 阻塞線程可用之前可從不執(zhí)行回調(diào)。
其他潛在源爭(zhēng)奪是 maxconnection 參數(shù), System.Net 命名空間用于限制的連接數(shù)。 此限制通常, 按預(yù)期工作。 但是, 如果許多應(yīng)用程序嘗試使許多請(qǐng)求到單個(gè) IP 地址同時(shí), 線程可能需要等待一個(gè)可用連接。
解決方案
Machine.config 文件以最適合您情況中要解決這些問(wèn)題, 可調(diào)整以下參數(shù):
◆maxWorkerThreads
◆minWorkerThreads
◆maxIoThreads
◆minFreeThreads
◆minLocalRequestFreeThreads
◆maxconnection
◆executionTimeout
要成功解決這些問(wèn)題, 請(qǐng)按照下列步驟操作:
◆限制同時(shí)到大約 12 每 CPU 執(zhí)行, ASP.NET 請(qǐng)求的數(shù)量。
◆允許 Web 服務(wù)回調(diào)用于 ThreadPool 中自由線程。
◆選擇一個(gè)適當(dāng)值對(duì)于 maxconnections 參數(shù)。 根據(jù)您選擇的 IP 地址和 AppDomains 使用數(shù)。
注意:建議來(lái)限制每 CPU 12 ASP.NET 請(qǐng)求的數(shù)量是有點(diǎn)任意。 但是, 此限制已證明能夠適合大多數(shù)應(yīng)用程序。
上述就是小編為大家分享的ASP.NET應(yīng)用程序中依賴machine.config的配置是怎么樣的了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。