文章編號: 821268 - 上次校閱: 2011年7月2日 - 版次: 13.0 爭用、 效能不佳、 和死結 (deadlock) 當您從 ASP 進行 Web 服務要求。NET 應用程式
在此頁中徵狀當您對進行 ASP 從 XML Web 服務呼叫。NET應用程式,您可能會發生爭用、 效能不佳、 和死結 (deadlock)。用戶端可能會報告要求停止回應 (或 「 擱置 」),或採取非常長的時間來執行。如果懷疑死結,可能是背景工作處理序回收。您可能會收到下列訊息的應用程式事件記錄檔中。
「 System.InvalidOperationException:若要完成的執行緒集區物件中沒有足夠可用的執行緒作業。" 「 HttpException (0x80004005): 要求等待時間截止跨。" 發生的原因這個問題可能是因為 ASP。NET 會限制數目背景工作執行緒和完成通訊埠執行緒的呼叫可以用來執行要求。 一般來說,對 Web 服務的呼叫會使用一個背景工作執行緒執行會傳送要求和一個完成通訊埠執行緒的程式碼從 Web 服務接收回呼。不過,如果要求重新導向或需要驗證,請在呼叫可能會使用兩個背景工作和兩個完成通訊埠執行緒。因此,您可以耗盡受管理當多個 Web 服務呼叫發生在同一時間,執行緒集區。 為範例中,假設執行緒集區僅限於 10 個背景工作執行緒,以及所有10 個背景工作執行緒目前正在執行的程式碼,都在等待回呼若要執行。回呼可以永遠不會執行,因為任何工作項目排入執行緒集區會被封鎖,直到執行緒變成使用這個選項。 另一個潛在的競爭來源是 maxconnection 參數, System.Net 命名空間使用的連線數目限制。一般而言,此限制的運作如預期般運作。不過,如果許多應用程式嘗試進行許多在同一時間的單一 IP 位址的要求,執行緒可能必須等待可用的連線。 解決方案若要解決這些問題,您可以調整下列最佳 Machine.config 檔案中的參數符合您的情況:
maxWorkerThreads 以及 maxIoThreadsASP。NET 會使用下列兩個組態設定若要限制的背景工作執行緒與完成執行緒的數目上限使用:2 * maxWorkerThreads minFreeThreads 以及 minLocalRequestFreeThreadsASP。NET 也包含下列設定設定可決定多少的背景工作執行緒與完成通訊埠執行緒必須是可用於啟動遠端的要求或用於本機要求: (maxWorkerThreads*Cpu 數目)-minFreeThreads 附註 [ minFreeThreads 參數和 minLocalRequestFreeThreads 參數會不隱含乘 Cpu 數目。minWorkerThreads作為的 ASP。NET 1.0 Service Pack 3 以及 ASP。NET 1.1 版中,ASP。NET 也包含下列組態設定,決定如何許多的背景工作執行緒可能會成為可立即處理遠端要求。maxconnection[ maxconnection 參數會決定多少連線到特定的 IP 位址。參數如下所示:executionTimeoutASP。NET 會使用下列組態設定限制要求的執行時間:附註 如果您增加的值 executionTimeout 參數,您可能也必須修改 processModelresponseDeadlockInterval 參數設定。 建議事項建議您在本節中的設定也可能不適用於所有的應用程式。不過,下列的額外資訊可以協助您進行適當的調整。如果當您建立一個 Web 服務呼叫單一 IP 位址從每一個 ASPX 頁面上,Microsoft 建議您使用下列組態設定:
附註 當您使用此設定時,您可以執行最多 12 個ASP。NET 要求每個 CPU 同時因為 100 88 = 12.因此,至少 88 *N 背景工作執行緒和 88 *N 完成連接埠執行緒會可供其他使用 (例如 Web 服務回呼)。 例如,您必須具有四個處理器和超執行緒的伺服器已啟用。根據這些公式,您可以使用下列的值這份文件中所提及的組態設定。 此外,當您使用這項設定,12 連線就可以使用每個 CPU 每一個 IP 位址的每個應用程式網域。因此,在下列式子案例中,很少爭用發生於要求等待連接和執行緒集區是不會用完:
狀況說明 這行為是經過設計的。 其他相關資訊 如果您遇到效能不佳、 在 IIS 7.0 與 ASP 的爭用。Net 的詳細資訊,請參閱下列 Microsoft 部落格: ASP。NET 執行緒使用方式,在 IIS 7.0 和 6.0 http://blogs.msdn.com/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx
(http://blogs.msdn.com/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx)
在 IIS 7.0 中 ASP.net 擱置http://blogs.msdn.com/webtopics/archive/2009/02/13/asp-net-hang-in-iis-7-0.aspx
(http://blogs.msdn.com/webtopics/archive/2009/02/13/asp-net-hang-in-iis-7-0.aspx)
?考如需詳細資訊,請造訪下列 Microsoft開發人員網路 (MSDN) 網站: http://msdn2.microsoft.com/en-us/library/ms998549.aspx
(http://msdn2.microsoft.com/en-us/library/ms998549.aspx)
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:821268?
(http://support.microsoft.com/kb/821268/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方
