最近的檢驗系統上線一段時間后,發現系統訪問不了,tomcat總是會自動崩掉,一般遇到這種問題,程序員的第一反應都肯定是內存溢出。
確實是,但是java里內存分好幾種,堆內存、棧內存、靜態內存區等等,下面記錄下我的排查問題步驟,以及解決方法。
一、查看服務器內存使用情況。
看看tomcat崩潰的時候,tomcat進程使用內存是否明顯占用較多。
二、查看tomcat日志
catalina.201X-XX-XX.log
這個日志記錄tomcat每次啟動的情況。
localhost.201X-XX-XX.log
這個日志記錄tomcat里各個webapp運行情況的日志。
localhost_access_log.201X-XX-XX.txt
這個日志記錄每次url訪問的情況。
看日志可以明白,是報java.lang.StackOverflowError錯誤了,這個是棧內存溢出,然后還可以看到是在testServlet里的75行出錯了。
這一行是啥呢?
out.println(sss.toString());
sss是一個相對很大的方法內的局部變量,一兩次訪問這個url可能不會有啥大的感覺,最多稍微慢點,但是並發訪問多一點,內存溢出就不可避免了。
三、解決方法
1.增大tomcat的棧內存。
2.改代碼,避免太大的局部變量。
四、以后如何監控tomcat運行情況
使用jdk自帶的JvisualVM工具,這個工具很好用,能監控各種java進程的情況,tomcat、eclipse等等,不光能監控本機的,而且還能監控遠程的服務器。
java程序運行一段時間之后停止
原創文章,未經作者允許,禁止轉載!!!!!!! 如何用java是一段代碼運行一段時間之后自動停止運行? 就拿打印隨機函數的代碼來做例子吧,讓程序隨機打印1-10的數字,打印十秒鍾后停止打印: publ ...
【生產環境】Tomcat運行一段時間后訪問變慢分析歷程
環境運行一天或者幾天,網站訪問就很卡,手機端app訪問頁面出現白屏.Tomcat運行一段時間后訪問變慢,但是cpu,內存都正常.日志也是發現不了啥.... 問題的原先分析 1.環境配置(cpu,內存, ...
tomcat運行一段時間后報錯";Too many open files";
tomcat運行一段時間后報打開太多文件錯誤:Too many open files 查看當前進程的文件打開數: lsof -n |awk '{print $2}'|sort|uniq -c |so ...
網站運行一段時間后就無法訪問,重啟Tomcat才能恢復
網站運行一段時間后就無法訪問,重啟Tomcat才能恢復出現這種情況,很可能是以下幾種情況:1.超過數據庫連接池上限2.並發數達到上限3.內存溢出具體還是需要通過打印的日志進行具體分析.解決方法1.如果 ...
WCF服務運行一段時間后客戶端無法連接WCF服務的解決辦法 (轉)
WCF服務運行一段時間后客戶端無法連接WCF服務的解決辦法 (轉) Windows Communication Foundation (WCF)是Microsoft為構建面向服務的應用提供的分布式通信 ...
k8s的flannel的pod運行一段時間init error
問題現象 使用Kubeadm部署的flannel網絡運行一段時間后,提示init:Error錯誤,查看具體的信息如下: [root@node1 ~]# kubectl describe pod kub ...
Pycharm 在Windows下出現閃退問題(即是在運行一段時間后,自己就退出崩掉了)的解決方法
Pycharm 在Windows下出現閃退問題(即是在運行一段時間后,自己就退出崩掉了)的解決方法 最近自己下載了最新版本的Pycharm,運行程序過程中發現,在運行一段時間后(比如10幾分鍾),Py ...
在Tomcat中部署Web項目的操作方法,maven項目在Tomcat里登錄首頁報404
maven項目在Tomcat里登錄首頁報404, 解決:編輯conf/server.xml進行配置里的標簽里的path.
mysql5.6運行一段時間之后網站頁面出現亂碼解決辦法
mysql5.6運行一段時間之后網站頁面出現亂碼,怎么都打不開,經過排查之后,知道是數據庫默認字符集出問題了,在此分享給大家經驗. 在mysql5.6配置文件:my.ini 找到: 添加如下內容: [ ...
隨機推薦
std::string的split函數
剛剛要找個按空格分離std::string的函數, 結果發現了stackoverflow上的這個問題. 也沒仔細看, 直接拿來一試, 靠, 不對啊, 怎么分離后多出個空字符串, 也就是 "a ...
git log 格式化輸出
Git log --graph --pretty=format: '%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)& ...
atitit. 解決org.hibernate.SessionException Session is closed
atitit. 解決org.hibernate.SessionException Session is closed #--現象:: org.hibernate.SessionException ...
在eclipse中安裝freemarker插件及html使用freemarker編輯器
freemarker模板文件使用jboss tools下提供的FreeMarker IDE,在線安裝的方法是:Help –> Install New Software 點擊and,再出來的對話框 ...
Android-MediaProvider數據庫模式