測試方法:
1.狂點抽取大量數據的接口
結果:
jvm里面的現成崩潰。導致tomcat錯誤。
思路:
最近發現tomcat老是自動關閉,開始也發現了,不過沒放在心上,直到今天,請求一提交到服務器,tomcat就死了
錯誤排查
tomcat自動關閉的原因很多,不一定是內存溢出,網上查到原因:
1.並發用戶數目過大,也會導致tomcat自動停止服務
2.系統本身的網絡負載平衡沒有做好,導致tomcat自動停止服務
3.程序迭代不合理也是一個原因
4.數據庫連接未關閉,導致資源損耗過重,會引起服務停止
5.程序嚴重錯誤,也會引起tomcat停止服務
沒錯,以上情況我都不是
接下來就是看日志了,報錯看日志是常識了
1.首先看tomcat的bin目錄下的logs文件夾的日志,日期排序,看當天的就行了,如果有錯誤信息,先解決了再說
2.看tomcat的bin目錄下面,有沒有hs_err_pidxxxx.log 之類的文件,如果沒有,你可以不看下面的內容了,如果有,恭喜你,內存溢出了
解決方案
1.既然是內存溢出,就先看看自己服務器的配置,是不是服務器內存不夠用了,盡量把沒用的進程停止了
2.去tomcat的bin下面有個catalina.bat的批處理文件,用notepad++打開文件,
全文搜索
%CATALINA_OPTS%
替換成
-Xmx128m -Xms64m -Xmn32m -Xss16m
一共有四處需要替換的地方
然后啟動tomcat
3.可能以上情況不行,接下來就是檢查你的運行環境了,運行環境也是有影響的
cmd命令窗口輸入:java -version
看看版本顯示是否正常
如果不是圖片中的提示,版本號無所謂,就需要看看你jdk的環境變量對不對了
簡單教程環境變量配置
a.
b.
如果環境變量沒問題,繼續
4.以上情況都不行的話,建議更換tomcat版本
推薦tomcat7090以上
tomcat官網下載
如圖下載需要的版本即可
安裝tomcat,打包部署,啟動tomcat
5.如果以上還是不行
a.可以在本地把項目打包出來
運行環境直接copy出來即可,路徑下如圖
wtpwebapps文件夾里面就是你運行的項目,不要剪切,不然你的本地代碼也沒了(哥就吃過這個虧,當天的代碼全沒了,但是我每天都會備份數據)
b.然后自己放到自己剛才下載的tomcat里面(這只是我的排錯方式,當本地環境和服務器環境一樣,看本地是否還報錯)
如果發現本地不報錯,那就是服務器的問題了
可能是你服務器配置雀實太低了,讓老板加錢升級吧
推薦環境:jdk1.8,tomcat7090
ps:高版本的tomcat用jdk1.8
http://aodeng.cc:8886/archives/tomca
解決方法:
1.更換jdk版本 不要用32位的(最高支持3.7g) 用64位的。
2.初始2G,最大6G,方法區256最大,初始128。
8g內存 推薦配置參數:
windows::::::set JAVA_OPTS=-server -Xms2048m -Xmx6000m -XX:MaxNewSize=512m -XX:MaxPermSize=512m
linux 注意一定要帶引號::::::::::set JAVA_OPTS="-Xms2048m -Xmx6000m -Xss1024K -XX:MaxNewSize=512m -XX:MaxPermSize=512m"
