用Java JMC控制臺分析線程阻塞原因
阿新 • • 發佈:2019-03-01
線程阻塞 row invoke error: 一行 nsa time pri report
問題
今天在玩dianping-CAT框架時,發現請求某個頁面的時候,發生了阻塞。瀏覽器得不到響應。
環境
本地Tomcat 8 , Windows 系統。
解決
啟動jmc 控制臺,找到BLOCKED 線程:
然後定位到代碼:
發現是我昨天加了一行代碼:
System.out.println();
private TransactionReport getHourlyReport(Payload payload) { String domain = payload.getDomain(); String ipAddress = payload.getIpAddress(); ModelRequest request = new ModelRequest(domain, payload.getDate()).setProperty("type", payload.getType()) .setProperty("ip", ipAddress); if (m_service.isEligable(request)) { ModelResponse<TransactionReport> response = m_service.invoke(request); TransactionReport report = response.getModel(); if (report == null) { System.out.println("m_service: " + m_service.getName() + " class: " + m_service.getClass().getCanonicalName()); throw new RuntimeException("Internal error: no response data for " + request + "!"); } return report; } else { throw new RuntimeException("Internal error: no eligable transaction service registered for " + request + "!"); } }
這個位置導致請求線程阻塞了。
用Java JMC控制臺分析線程阻塞原因