某個系統使用openjpa 作為持久層,對一些native query,openjpa返回的result size返回的是int最大值2147483647,讓人很受傷。舊的**為了得到實際result長度,通常在持久層對result list做一次遍歷操作,把所有物件放到新的arraylist中返回。最近一次功能擴充套件,對返回的result list直接使用toarray放到新的list當中返回,本地測試沒有問題,去到伺服器websphere上面就掛了,系統卡死在呼叫新持久層函式的地方,不知道為什麼。我先去系統監控中檢視了cpu,記憶體,網路使用情況,發現核心使用cpu的時間明顯變長
接下來要求系統環境維護人員幫忙對出問題的jvm進行了core dump和heap dump,用ibm thread analyzer hca456.jar對core dump進行分析,發現系統停在了arraylist的初始化地方
很明顯,系統是死在了toarray的實現上了,對integer最大長度的array在進行拷貝操作,系統cpu使用時長增加。
在oracle的jdk中,toarray的拷貝長度取決於內部array的length,所以雖然result list size返回的是integer的最大值,但是不影響toarray的實現,ibm的jdk實現不一樣,結果就中招了。
Websphere快取問題
一 場景 linux環境,通過websphere控制更新程式,但是由於業務需求,所有更新必須撤銷。因此,我將對應的應用目錄刪除,並將備份檔案重新歸檔 最後發現與預期效果不一樣。通過反覆確認 沒錯,最後也做了一些其他的測試,可還是沒有解決問題!不適合所有系統,此處提出只為以後遇到同樣問題時方便查閱 找...
webSphere記憶體溢位
有乙個做了很長時間的專案,是用websphere做生產環境的,可是一旦載入的專案過多,websphere就很傲嬌的記憶體溢位,這是乙個折騰了公司裡某個前輩很久很久的問題,因為是測試版,所以各種官方文件說的控制介面神馬的都找不到,後來前輩說他是這樣解決的,鑑於這不是神馬公司機密,又怕以後忘了,就貼部落...
Websphere部署應用
websphere的部署是在管理控制台進行部署,跟tomcat等差別很大,將webreport.war拷貝至websphere所在伺服器,複製到c war webreport.war。進入管理控制台登陸介面,輸入使用者名稱密碼 管理控制台介面 開啟左側目錄樹的應用程式,點選新建應用程式,選擇右側顯示...