java服務突然被掛掉,停止服務處理方案


一、問題背景

  該問題出現在我們測試環境。測試環境部署了很多java應用。

  其中一個數據服務(主要提供訂單交易數據聚合查詢),用着用着就服務掛掉了也就是進程沒有了。

 

二、分析過程

  1.了解服務器配置  =====》 4核8G內存

  2.通過 ps -ef|grep java 查看被關掉的應用 當前進程id及PID 和分配的內存大小 =====》 1G =>4G (下圖是我處理完后截取的圖片所以最大值只是2G)

 

  3.通過top -p PID 命令實時查看該PID內存使用情況

 

  4.根據現象發現問題

    發現該java應用的使用內存,只增不減。也就是java垃圾收集器並沒有觸發。

    原來JAVA虛擬機會一直增加內存占用,一直到你設置的最大內存4096M附近,才會觸發垃圾回收機制,內存回收。但是由於服務器部署了很多其他java應用占用了4G左右,無法分配給該應用4G內存。當快達到4G時,導致服務器內存告警而將該進程kill掉

 

三、解決方案

  將java虛擬機內存最大值調低到不大於服務器剩余的內存。

  我將服務器內存從4G調到2G就可以了,該應用內存使用一直維持在2G內(快到2G時會觸發垃圾回收的),從而不會導致總內存不足導致服務器kill掉進程。

  -Xms1024m -Xmx2048m

    

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM