我們正在運行在這個問題上。我們正在使用一個Web服務(使用soap4r)來運行某種搜索,當web服務服務器關閉並且我們的應用程序試圖連接它時,問題就會出現。 此時應用程序無法訪問,並且所有客戶都被阻止。Mongrel羣集和多應用程序問題
我們可以做些什麼來避免這種情況?是否有可能阻止路由到一個雜種,它被阻止? (我假設Apache的代理採用循環賽algohritm)
感謝 羅伯託
我們正在運行在這個問題上。我們正在使用一個Web服務(使用soap4r)來運行某種搜索,當web服務服務器關閉並且我們的應用程序試圖連接它時,問題就會出現。 此時應用程序無法訪問,並且所有客戶都被阻止。Mongrel羣集和多應用程序問題
我們可以做些什麼來避免這種情況?是否有可能阻止路由到一個雜種,它被阻止? (我假設Apache的代理採用循環賽algohritm)
感謝 羅伯託
這聽起來好像它可能更多的是mod_proxy的問題,不是一個用雜種或Apache - 你設置代理超時如描述here?
使用mod_rewrite重新創建對Web服務客戶端比Apache的代理超時錯誤更有用的錯誤頁面。例如,如果Apache配置存在,則該配置將呈現maintence.html
。所以你所要做的就是放入文件,服務器自動進入主機模式。
# Check for maintenance file and redirect all requests
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]
你可以把它設置了相應的conent類型,使靜態文件看起來像基本上是「請等待10分鐘,然後再試一次」的網絡服務響應,可能與配置的等待一個XML文件時間。
Capistrano's web:禁用任務可能對您有所幫助,因爲它需要一個參數來指定網站將不可用的時間長度,並在生成maintence.html
文件時將其放入HTML中。
您需要對您的Soap4R請求設置超時。將connect_timeout屬性設置爲相當小的東西。這應該會導致在您的代碼中處理異常,而不是讓請求掛起。
您還應該確保您的超時設置在您的mod_proxy_balancer配置中。
您使用mod_proxy在Apache Mongrel服務器之間進行通信嗎? – glenatron 2008-10-09 11:20:00