2012-08-25 381 views
1

我有一個客戶端服務器應用程序。我的服務器是PHP,Mysql和Apache,客戶端是使用C#windows Form開發的。我有用於客戶端服務器通信的SOAP WSDL webservice。 最近我發現了一個問題,當我的客戶端發送請求時,響應會在很長一段時間後(比如3/4分鐘到某些時間)發生,有時我從來沒有得到響應。我已經檢查了客戶端(httpwebrequest timeout,readwritetimeout)以及服務器(timeout,keepalivetimeout)端的所有超時值,我的最大值是5分鐘(對於httpwebrequest readwritetimeout)。那麼有人可以告訴問題是什麼?爲什麼需要花費數小時才能得到迴應或者沒有做出任何迴應?Webservice花費很長時間來響應

+0

我有一種感覺你的服務器超載。極長的響應時間很奇怪,但我會說你的請求是空閒的,直到服務器可以處理它。 –

+0

那麼我需要在服務器或客戶端執行什麼樣的設置。我想要的是,如果需要這麼長時間然後請求應該超時,那麼我可以發送新的請求並且第一個請求應該被取消。 – ganesh

+0

我不確定你可以在這裏做什麼,因爲我沒有使用過SOAP。不過,我想指出的是,如果你有這麼長時間的等待迴應,試圖通過重新初始化來強制響應並不是一個可持續的解決方案,並且只能給服務器帶來更多壓力(與我的假設一致服務器過載)。如果響應時間爲5秒,那麼可以,但是幾分鐘到幾個小時就是一個紅旗,表示服務器發送請求需要注意。 –

回答

1

以我的經驗,像這樣的問題伴隨着Web服務連接被防火牆阻止,或者以某種方式阻止了代理。檢查這不是問題。

您應該首先通過縮小選項來定位問題。你有沒有試過在本地調用服務器上的Web服務,看看你是否遇到同樣的問題 - 如果你不這樣做,那麼肯定會出現連接問題。

若要排除客戶有問題,請嘗試使用類似http://www.soapui.org/的內容來調用您的服務器Web服務。

你從哪裏調用服務器?你確定你打電話給它的設備沒有被IP阻塞,並且你確定你的網絡服務能夠從它運行的地方訪問它的數據庫。

爲您的服務器API定義的MySQL用戶是否可以從服務器的IP進行訪問。 MySQL用戶也經常被IP阻止。

如果你在本地運行它,你確定你的IIS Express設置/虛擬文件夾不混亂,並且URL解決錯誤。嘗試再次創建虛擬文件夾以排除此情況。即使在本地運行,請記住檢查MySQL用戶是否可以訪問本地IP。

當我遇到類似問題時,我通常會檢查以下幾件事情。

+0

我使用的服務器是我的生產服務器,我使用的是Apache。我的MySQL IP是'本地主機'爲我的PHP代碼。至於在本地檢查,我從來沒有在我的開發機器上發現它,但是,今天仍然會在本地服務器上進行過夜測試。另外,我不會每次都遇到這個問題,但有時在3/4小時之後。 – ganesh