2009-08-22 74 views
1

與我們的合作伙伴合作,我們現在開發了兩套獨立的Web服務供其使用。第一個是一個簡單的「發佈到https URL」樣式的Web服務,我們通過在ASP.NET中構建一個網頁來檢查URL中的參數,然後採取相應措施,從而爲其提供便利。這個「網絡服務」(如果你可以這麼稱呼的話)一直非常穩定。ASP.NET Web服務故障排除?

在某個時候,合作伙伴要求我們開始使用基於SOAP的Web服務。根據他們的要求,我們在很大程度上基於以前的對象構建了一套新的Web服務,並重新實現爲一個實際的「Web服務」。這個Web服務並不是非常穩定:每週大約一次,Nagios會提醒我們,我們的Web服務沒有響應 - 而且快速的iisreset可以做到這一點。

分析日誌輸出並在調試器中工作並沒有帶來任何具體的結果。這個新Web服務的卷實際上比HTTP Web服務要低得多。我認爲這可能是代碼問題或平臺問題,當然也可能是介於兩者之間的問題。

我們試過,很少有改進:

  • 重複行爲在實驗室
  • 調試在Visual Studio調試器
  • 與IIS選項擺弄,給它自己的應用程序池

我的問題,下一步的故障排除步驟是什麼?

環境: Windows Server 2003標準版R2 Service Pack 2的32位,Visual Studio 2005中,MS SQL 2005的.NET Framework 2.0.50727

+0

這將有助於知道你的web服務正在做什麼。我們使用網絡服務相當多,並且通常不會無緣無故地看到IIS摔倒。 – 2009-08-22 23:31:57

+0

通常,進行數據庫連接,運行查詢。還有一個exe系統調用。 – 2009-08-22 23:49:13

+0

感謝您的提示。我喜歡SQL Server Profiler這樣的東西,我會着手使用procmon和perfmon來分析應用程序。 – 2009-08-22 23:57:23

回答

1

你可能會得到通過剖析你的web服務,並瞭解了一些答案,他們如何正在使用他們的資源。在這方面,perfmonprocmon都是非常有用的工具。

編輯:既然你說大約一個星期後發生錯誤,我唯一能想到的就是資源的使用。確保您的數據庫連接正在清理,並且任何打開的文件(對exe的系統調用)都將被關閉。另外,如果你的web服務可以容忍它,IIS有一個觸發定期回收App池的設置,以處理性能隨着時間的推移而降低的情況。它很髒,但它可能適用於你的情況。

+0

嗯,感謝您的應用程序池回收技巧,這可能只是一個竅門。我們通常擅長釋放數據庫連接,但會再次檢查。與系統調用相同。感謝您的指導。 – 2009-08-23 05:00:30

+0

我們的應用程序池顯然默認設置爲每29小時回收一次。我已將其更改爲「每天凌晨4點」。雖然在那裏我們注意到應用程序池顯然只限於一個進程,並且我們啓用了「Web Garden」功能來增加此功能。這似乎是你不應該打開的那種東西,但可能是我誤解了一些東西。 – 2009-09-10 17:32:52

+0

29小時eh?尼斯。這將解釋「隨機」關閉。至於網絡花園 - 我只能說,如果有一個被證明的理由這樣做。我們運行一個負載很重的web服務,並且還沒有看到需要使用它... – 2009-09-10 23:53:05

1

由於沒有太多可以繼續 - 這是我們遇到的另一個有關我們的Web服務的奇怪問題。

當Web服務停止響應內存使用情況如何?我們遇到了與系統上繁忙Web服務相關的內存和內存碎片問題(還有其他事情正在運行導致額外的碎片)。當我們重新考慮從更小的DLL加載Web服務並依賴於其他庫(而不是一個大型庫)時,我們能夠解決內存碎片問題。

要確定發生了什麼,我們會從侵犯應用程序池所在的iis工作進程轉儲,然後使用WinDbg進行審查。 http://www.microsoft.com/whdc/devtools/debugging/default.mspx

此外,我們使用DebugDiag進行postmortem轉儲。 http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1286

希望這提供了另一個方向來看待。

+0

它的確如此,我們碰巧有一個大的代碼庫DLL,這取決於。謝謝,我會檢查一下。 – 2009-08-23 04:32:35

+0

只需添加註釋:.Net會將Web服務駐留的dll加載到內存中,以檢查其上的代碼訪問安全權限。網絡服務收到大量的流量,當我們分析LOH時,當我們開始遇到內存問題時,有多達400份的dll。 IIS的重新啓動解決了這個問題,但它會將每個人踢出應用程序 – Dan 2009-08-23 17:52:23