tomcat伺服器快取問題

jaymarco發表於2020-09-23

1   問題描述

某年某月某日某系統開發商反饋有一個新功能需求上線後,介面沒有正常顯示出來。卻還是呈現出舊的功能,直接影響使用者使用。 


2   系統環境

作業系統: Redhat6.4
JDK版本: JDK1.6

Db版本:  Oracle 11.2.0.4  RAC

中介軟體版本:Apache Tomcat/6.0.33

叢集:否


3   故障處理過程

3.1故障 分析

開發商說:該功能是一個webservice介面,新增了一欄 buinessScope值,但程式碼已經發布到生產系統,但沒見功能生效。測試環境有測試過是正常的。

那好讓我們來看看效果,直接透過瀏覽器訪問生產系統地址 ,確實沒有這個buinessScope這一欄程式碼,再去登入測試系統確實有buinessScope這一欄程式碼。

生產系統介面


測試系統介面

很奇詭吧

 

分析思路:

1、該功能程式碼是否有生產,是否現在生產環境程式碼還是老程式碼。

2、Tomcat的快取機制會不會有問題。

接下來我們分析第一種情況

程式碼檔案路徑:axis2.war/oracle/apps/po/weServices/entities/OrderInfo.class

找到生產環境和測試環境md5值一致,應該不會存在程式碼沒有上線

[root@ pdcws-vm-szzb entities]# md5sum  OrderInfo.class    <<----- 生產環境

e41d409f073cce04898b8e5b04441256  OrderInfo.class

[tomcat@ pdcws-szzb entities]$ md5sum  OrderInfo.class    <<----- 測試環境

e41d409f073cce04898b8e5b04441256  OrderInfo.class

還是有點懷疑,需要再次確認程式碼,於是去生產環境將OrderInfo.class下載下來進行反編譯檢查一下。

看了反編譯後的程式碼,確實這個功能在生產系統已上線,透過以上分析我們可以排除程式碼問題。

接下來我們分析第二種情況

1、清空瀏覽器快取

2、檢查tomcat服務是否有設定自動快取清理機制,檢查配置檔案conf/server.xml,結果發現沒有reloadable=true快取清理機制。

3、手工清理快取axis2功能專案

rm –rf  $TOMCAT_HOME\work\Catalina\localhost\axis2

     4、重啟tomcat服務後,果然程式碼已生效,原來是快取問題導致。


3.2故障原因

其原因是快取機制出現了問題,對於新增xml,jsp,class程式碼檔案web容器沒有對其進行自動重編,最後會導致程式碼不生效。


4 解決方案

1、設定自動快取清理機制conf/server.xml,結果發現沒有加上reloadable快取清理機制。

2、釋出新功能提前,提前手工清理快取。

有需要的朋友可以關注我的公眾號,文章每日一更


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2723370/,如需轉載,請註明出處,否則將追究法律責任。

相關文章