WebSphere 更新應用後請求靜態資源出現 503 錯誤

系統環境:WebSphere 6.1.0.25 Network Deployment, 有集羣,前端用IBM Http Server Plugin
 
事情是這樣的,因爲本集羣上有多個應用,因此在更新應用時不能夠重啓App Server。同時,在集羣環境中,若是直接更新應用,會自動觸發WAS集羣中的App Server重啓。因此咱們更新應用的習慣是,先中止應用,再卸載,而後再部署新的版本。
 
在這樣的應用更新實施以後,出現過兩次這樣的狀況:部署後的新應用,功能都正常,就是樣式全丟了。使用Firefox的Firebug跟蹤一下,發現是在請求style.css時,服務器給了503 Service Unavailable的響應。檢查服務器上應用部署目錄,物理文件都在,訪問權限也正常,可是就是沒法正確請求到這個文件。
 
搜索了不少文檔,終於找到了這個問題的緣由,屬於WAS的Bug:
 
PK80333: CANNOT DISPLAY A CERTAIN GIF FILE
 
大意是說:當應用正在中止的時候,在某個很短的時間段內,若是服務器接收到一個靜態資源(css, js, html, 圖片等)的請求,此時,這個靜態資源會被服務器標識爲永久性不可用。即便應用再次啓動,訪問這個靜態資源,服務器也會給出503 Service Unavailable的響應。可是對於動態資源,例如JSP和Servlet就不存在這個問題。
 
這個問題在6.0.1.27修復。
 
 
 
或者,從新啓動App Server,也會恢復。
 
而且,在發生故障的場景中,應用啓動以後,若是換一個域名訪問此靜態資源,就是正常的。
 
好比說:http://xx.com/styles/style.css 請求正好在應用中止的那個片刻到達服務器,那麼後續全部的對於http://xx.com/styles/style.css的請求都會收到503的響應。可是若是換一個指向同一地址的http://xx1.com/styles/style.css請求,則是正常的。
 
如下是原文:
 
 
 
Problem summary
****************************************************************
* USERS AFFECTED:  IBM WebSphere Application Server Version 6.1*
*                  and Version 7.0 users.                      *
****************************************************************
* PROBLEM DESCRIPTION: All requests for a static file result   *
*                      in a                                    *
*                      Servlet.has.become.temporarily.unavaila *
*                      ble.for.service exception.              *
****************************************************************
* RECOMMENDATION:                                              *
****************************************************************
When an application is being stopped a small timing window
exists during which, if a request for a static file is
received, the static file will become permanently unavailable
even after the application has been restarted. Once the static
file has become permanently unavailable all requests for the
file will result in a
Servlet.has.become.temporarily.unavailable.for.service
exception. The problem will persist until the server on which
the application is running is restarted.
 
Note the problem  occurs for static files only and not, for
example, for servlets and JavaServer Pages (JSPs).
Problem conclusion
The WebContainer has been modified to remove the timing window
so that a request for a static file during application stop
cannot cause the static file to become permanently unavailable.
 
The fix for this APAR is currently targeted for inclusion in
fix packs 6.1.0.27 and 7.0.0.5. 
相關文章
相關標籤/搜索