成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

java - Tomcat的Spring-MVC項目在重啟一段時間后變卡

瀏覽:188日期:2024-01-09 16:32:46

問題描述

最近更新了程序之后,發現網頁在tomcat重啟一陣子之后變得異常的卡。不知道為什么。發現了好多內存泄漏的警告,覺得是不是因為不正常的關閉導致內存不足呢,就試了幾個方法。

最先試著把tomcat的context.xml里面設置緩存最大值,貌似設到了100000,啟動后發現速度不錯,但過了一段時間又卡得不得了了。再之后把服務器的內存調大了,問題還是照樣出現。而且每次系統的緩存只會越來越多,不會減少。java - Tomcat的Spring-MVC項目在重啟一段時間后變卡

上網看了一些類似問題的回答,有人說是java獲取數據庫的效率不高而造成的,但是我覺得我這個問題應該不是出在這,因為有很多需要獲取數據庫的函數代碼都變,以前就沒有出現過這種問題,為什么現在變成這樣呢?不過最近倒是有一些改動,例如添加了兩個TimerTask。倒覺得應該問題不回出在這里吧。

package x.xx.xxx;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.Timer;import java.util.TimerTask;import javax.annotation.Resource;import org.apache.log4j.Logger;import x.xx.xxx.ManagementStation;import x.xx.xxx.ManagementStationService;/** * 源代碼來自《java定時任務,每天定時執行任務》 * http://www.cnblogs.com/cvst/articles/5818233.html * */public class TimerManager { @Resource RemoteControlController remoteControlController;@Resource ManagementStationService managementStationService; @Resource ControllerStatusController controllerStatusController; // 時間間隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; private static final int START_TIME = 1; public void initTimerManager() {Calendar calendar = Calendar.getInstance();/*** 定制每日1:00執行方法 ***/calendar.set(Calendar.HOUR_OF_DAY, START_TIME);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);Date date = calendar.getTime(); // 第一次執行定時任務的時間Date date2 = calendar.getTime();// 如果第一次執行定時任務的時間 小于 當前的時間// 此時要在第一次執行定時任務的時間加一天,以便此任務在下個時間點執行。如果不加一天,任務會立即執行。if (date.before(new Date())) { date = this.addDay(date, 1);}Timer timer = new Timer();Timer timer2 = new Timer();UpdateDailyEletricPowerTimerTask task = new UpdateDailyEletricPowerTimerTask();// 安排指定的任務在指定的時間開始進行重復的固定延遲執行。timer.schedule(task, date, PERIOD_DAY);UpdateLampStatusTimerTask task2 = new UpdateLampStatusTimerTask();timer2.schedule(task2, date2, PERIOD_DAY); } // 增加或減少天數 public Date addDay(Date date, int num) {Calendar startDT = Calendar.getInstance();startDT.setTime(date);startDT.add(Calendar.DAY_OF_MONTH, num);return startDT.getTime(); } public class UpdateDailyEletricPowerTimerTask extends TimerTask { private Logger log = Logger.getLogger(UpdateLampStatusTimerTask.class);@Overridepublic void run() { try {/** * 查詢前昨兩天日凍結正向有功總電量 */Calendar now = Calendar.getInstance();int year = now.get(Calendar.YEAR) - 2000;int month = now.get(Calendar.MONTH) + 1;int day = now.get(Calendar.DATE);remoteControlController.dailyPositiveElectricPowerCollecting(year, month, day); } catch (Exception e) {log.info('-------------NFDFlightDataTimerTask解析信息發生異常--------------'); }} }public class UpdateLampStatusTimerTask extends TimerTask { private Logger log = Logger.getLogger(UpdateLampStatusTimerTask.class);@Overridepublic void run() { try {/** * 更新全部燈具狀態 */List<ManagementStation> mlist = managementStationService.getManagementStationList();StringBuffer temp=new StringBuffer('');for(ManagementStation m:mlist) temp.append(m.getMid()+',');String[] arr = temp.toString().split(',');boolean realTime = false;controllerStatusController.UpdateControllerStatus(arr,realTime); } catch (Exception e) {log.info('-------------UpdateLampStatusTimerTask解析信息發生異常--------------'); }} }

不過系統變得死卡死卡的的時候其實是開啟thread和進行socket通訊之后。不過不知道問題出在前置機于客戶端的通訊那,還是我這邊的系統程序問題,下面是系統接收返回信息的線程,請各位大蝦過目過目,謝謝。

private Status<OperationReturnMsgInfo> GetReturnedInfo(int frame_no) throws Exception{FrameController.addFrameToSendingQueue(frame_no);Status<OperationReturnMsgInfo> status=new Status<OperationReturnMsgInfo>();long beginTime = System.currentTimeMillis();boolean over_runtime = false;/** * 如果超過最大接收時間RUNTIME_MAX就直接把接收到的信息返回頁面 * 其他的報文繼續在后臺進行接收 */while(FrameController.getExpectReutrnedFrameAmount(frame_no) != 0){ Thread.sleep(1000); long nowTime = System.currentTimeMillis(); over_runtime = nowTime - beginTime > RUNTIME_MAX? true : false; if(over_runtime) break;//超時跳出}List<byte[]> return_frames = FrameController.GetReturnedFrame(frame_no);List<OperationReturnMsgInfo> olist= new ArrayList<OperationReturnMsgInfo>();if(return_frames !=null){ for(byte[] return_frame:return_frames){List<OperationReturnMsgInfo> olisttmp = parseFrontEndMsg(return_frame);if(olisttmp != null) olist.addAll(olisttmp); } status.setCode(1);}else{ status.setCode(0);}status.setList(olist);if(!over_runtime){ FrameController.RecallFrameNo(frame_no);}else{ /** * 后臺處理超時沒有返回的報文 */ final int tmp_frame_no = frame_no; new Thread(new Runnable(){@Overridepublic void run() { int frame_no_in_the_thread = tmp_frame_no;//FIXME 有點問題:如果tmp_frame_no在運行到這行時被其他線程改變了,怎么辦? long beginTime = System.currentTimeMillis(); boolean over_runtime = false; int lastExpectReutrnedFrameAmount = FrameController.getExpectReutrnedFrameAmount(frame_no_in_the_thread); while(FrameController.getExpectReutrnedFrameAmount(frame_no_in_the_thread) != 0){try { Thread.sleep(1000);} catch (InterruptedException e) { e.printStackTrace();}long nowTime = System.currentTimeMillis();over_runtime = nowTime - beginTime > BG_RUNTIME_MAX? true : false;if(over_runtime) { //再超時便強制回收幀序號,雖然暫時和直接回收沒有區別。 FrameController.CompulsivelyRecallFrameNo(frame_no_in_the_thread); return;}/** * 如果該幀返回報文有繼續更新,重置beginTime * 主要用于十分花時間的多報文返回操作RUNTIME_MAX的話就直接返回到頁面。 * 相當于如果下一個報文返回間隔的時間大于RUNTIME_MAX就強行關閉對該幀的返回報文的接收 */if(lastExpectReutrnedFrameAmount != FrameController.getExpectReutrnedFrameAmount(frame_no_in_the_thread)){ lastExpectReutrnedFrameAmount = FrameController.getExpectReutrnedFrameAmount(frame_no_in_the_thread); beginTime = System.currentTimeMillis();} FrameController.RecallFrameNo(frame_no_in_the_thread);} }).start();}return status; }

問題解答

回答1:

題主可以找一些分析工具,先捕捉一些有用的信息。變卡程序執行過慢最有可能的原因是搶占資源cpu。

首先樓主可能使用 jstack pid 打印出線程堆棧,分析一下線程主要是在如何工作,程序運行到哪行代碼,在做什么計算?在去逐一排查對應的代碼問題

如果jstack不夠樓主還可以使用xrebel/yourkit這類工具輔助定位

回答2:

看題注描述,應該是內存泄漏引起資源搶奪導致。查找內存泄漏不是一篇回答可以解決,還要結合具體代碼和情況分析,這里給出排查思路供參考:

配置Tomcat泄漏導出堆文件 具體參考如何配置tomcat產生heapdump

通過工具分析分析headdump文件,定位異常堆棧信息常規分析工具有IBM HeapAnalyzer、jhat、jmap,可以參考使用JMAP dump及分析dump文件

分析代碼中異常堆棧創建和銷毀是否存在異常,如未正常銷毀導致泄漏

建議樓主嘗試掌握方法來解決問題,以后碰到此類問題就可以觸類旁通了

標簽: java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲区一区二区三区| 亚洲成a人片在线观看中文| 亚洲线精品一区二区三区| 成人一区二区在线观看| 欧美性一级生活| 日韩中文字幕亚洲一区二区va在线| 亚洲看片一区| 18涩涩午夜精品.www| 欧美日韩三区| 久久久久亚洲蜜桃| 成人av电影在线网| 日韩一级片在线播放| 国产一区二区三区久久悠悠色av| 欧美性一二三区| 日av在线不卡| 在线免费观看日本欧美| 日日夜夜免费精品| 日本道精品一区二区三区| 天堂va蜜桃一区二区三区| 久久精品男女| 日本中文字幕一区| 欧美色电影在线| 国产精品一二三区在线| 日韩欧美中文字幕制服| 成人激情小说乱人伦| 精品久久久久久最新网址| av激情成人网| 337p粉嫩大胆噜噜噜噜噜91av | 欧美亚洲精品一区| 久久激五月天综合精品| 欧美美女喷水视频| 成人永久免费视频| 国产日韩v精品一区二区| 韩国亚洲精品| 亚洲一区二三区| 日本精品裸体写真集在线观看| 久久99国产精品麻豆| 日韩一二三区视频| 91亚洲精品久久久蜜桃网站| 国产日本欧洲亚洲| 亚洲国产精品久久久久久女王| 亚洲小说欧美激情另类| 欧美亚洲丝袜传媒另类| 国产成人av电影在线播放| 精品国产a毛片| 一区在线免费观看| 亚洲高清久久久| 欧美色图在线观看| hitomi一区二区三区精品| 亚洲色图.com| 欧美性猛交xxxxxxxx| 成人小视频免费在线观看| 亚洲国产精品国自产拍av| 99亚洲一区二区| 麻豆国产91在线播放| 久久综合一区二区| 一区二区国产精品| 韩国女主播一区| 久久精品人人做| 亚洲影音先锋| 国产精品影音先锋| 中文字幕av一区 二区| 国产农村妇女毛片精品久久莱园子| 免费精品视频最新在线| 欧美白人最猛性xxxxx69交| 亚洲国产国产亚洲一二三 | av在线免费不卡| 国产精品灌醉下药二区| 色综合久久天天| 高清在线观看日韩| 中文字幕一区二区三区在线不卡 | 麻豆精品视频在线观看视频| 欧美一区二区三区在线电影| 国产精品99一区二区| 日本在线播放一区二区三区| 欧美va在线播放| 一区二区三区国产盗摄| 国产一区二区三区在线看麻豆| 欧美韩国日本一区| 色系网站成人免费| 色综合中文字幕国产 | 国产嫩草一区二区三区在线观看| 久久99国产精品免费网站| 国产精品视频观看| 在线日韩国产精品| 欧美日韩18| 久久国产免费看| 国产精品护士白丝一区av| 欧美专区在线观看一区| 午夜精品免费| 久久99精品久久久久久久久久久久 | 蜜桃精品视频在线观看| 欧美经典一区二区三区| 在线免费不卡视频| 欧美福利网址| 久久99精品一区二区三区| 中文字幕日韩一区二区| 欧美蜜桃一区二区三区| 伊人蜜桃色噜噜激情综合| 国产.欧美.日韩| 性做久久久久久久免费看| 国产欧美一区二区三区鸳鸯浴| 色狠狠综合天天综合综合| 欧美日韩岛国| 国产一区二区导航在线播放| 亚洲一级不卡视频| 欧美激情一区二区三区四区 | 91精品国产综合久久婷婷香蕉 | 亚洲一二三专区| 久久久久久久久免费| 91黄色免费观看| 亚洲激情av| www.日韩在线| 久久精品国产99| 亚洲二区视频在线| 国产精品卡一卡二| 日韩精品一区二区三区视频播放 | 日韩精品福利网| 日韩码欧中文字| 日韩欧美中文字幕精品| 色伊人久久综合中文字幕| 激情丁香综合| 高清av一区二区| 日本强好片久久久久久aaa| 亚洲柠檬福利资源导航| 精品免费视频.| 欧美专区日韩专区| 一区二区欧美日韩| 91浏览器入口在线观看| 国产黄人亚洲片| 日韩中文字幕亚洲一区二区va在线| 亚洲欧洲韩国日本视频| 国产欧美一区二区精品忘忧草| 777午夜精品免费视频| 久久综合久久久| 国产欧美另类| 欧美日韩精品免费观看视频完整| 国产精品一区二区你懂的| 日本视频一区二区三区| 亚洲一本大道在线| 亚洲三级小视频| 国产精品天美传媒| 精品成人一区二区| 欧美一区二区高清| 欧美二区在线观看| 欧美三级电影精品| 色网综合在线观看| 亚欧美中日韩视频| 国产日韩欧美一区| 中日韩男男gay无套| 韩国久久久久| 欧美日韩调教| 欧美日韩一区在线播放| 91无套直看片红桃| 99精品一区二区| av一区二区不卡| 91丨九色porny丨蝌蚪| 成人aa视频在线观看| 床上的激情91.| 成人一区二区三区中文字幕| 国产一区二区在线看| 激情久久五月天| 激情欧美一区二区三区在线观看| 蜜桃视频一区二区三区| 青椒成人免费视频| 奇米精品一区二区三区在线观看 | 久久精品一区二区三区中文字幕| 亚洲第一毛片| 午夜日韩视频| 欧美在线网站| 欧美二区在线| 韩国欧美一区| 日韩亚洲国产精品| 日韩午夜高潮| 亚洲一区免费| 久久精品欧洲| 欧洲精品中文字幕| 欧美日韩视频在线一区二区| 91麻豆精品国产自产在线观看一区 | 亚洲第一黄色| 亚洲精品在线二区| 99热这里只有精品8| 亚洲美女啪啪| 亚洲综合社区| 91极品美女在线| 欧美日韩精品免费观看视频| 欧美伦理视频网站| 91精品在线免费| 精品少妇一区二区三区| 久久久青草青青国产亚洲免观| 国产欧美日韩视频一区二区| 中文字幕在线观看一区二区| 一二三四区精品视频| 青青草91视频| 国产精品一区二区三区四区| av在线播放一区二区三区| 欧美一区二区三区免费看| 精品99视频| 久久久久久久久一区二区| 欧美在线|欧美|