2012-11-03 47 views
1

我正面臨3層應用程序的問題。它使用IIS和SQL Server。問題是,有時(更長的請求導致更高的可能性)客戶端沒有收到來自IIS的響應。它在SQL Server上沒有任何活動時掛起,甚至當我殺死一個SQL過程時,我也不會收到異常。當我在這些掛起後檢查數據時,發現我的SQL請求已成功,所以問題似乎在IIS上。不幸的是,我對控制應用程序的地方沒有太多的控制,我無法重現問題。這個問題可以有很多答案,但至少我需要提示我應該調查什麼方向。
更新:我也有一個應用程序運行在同一臺服務器上,它執行一項小工作:它將一行一行地插入數據庫中。人爲地讓它運行了大約10分鐘(把xlock放在桌子上)。刪除xlock後,IIS上的進程繼續運行併成功插入這100行。然而,控制從來沒有返回到客戶端,它只是無限期地等待。看起來這是在長時間運行的進程之後向客戶端返回響應時的​​一個問題。
順便說一下,這不是一個網站,而是一個使用Remoting的WinForms應用程序。IIS偶爾沒有迴應

回答

1

我終於找出問題所在。該應用程序在Web場上運行,並且客戶端和IIS之間有一個平衡器服務器。平衡器的超時時間太短。出於某種原因,它不太適合.net遠程處理,並且不會向客戶端返回任何超時異常。這個問題已經通過增加超時來解決。

1

如果您確定SQL Server正在返回到IIS,那麼您可能需要檢查IIS logs以查看可能發生的請求。這些日誌的正常位置是%SystemRoot%\system32\Logfiles\<service_name>

如果您不確定SQL Server,您可能會訪問SQL日誌,運行Profiler或檢查Windows系統日誌中是否存在錯誤,在Visual Studio中調試時運行您的站點或將您自己的日誌記錄添加到您的應用程序找出它掛在哪一步。

+0

IIS日誌很好,這似乎是一個傳輸級別的問題。 – XanderMK