zoukankan      html  css  js  c++  java
  • 用Java JMC控制台分析线程阻塞原因

    问题

    今天在玩dianping-CAT框架时,发现请求某个页面的时候,发生了阻塞。浏览器得不到响应。

    环境

    本地Tomcat 8 , Windows 系统。

    解决

    启动jmc 控制台,找到BLOCKED 线程:
    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 + "!");
    		}
    	}
    

    这个位置导致请求线程阻塞了。

  • 相关阅读:
    P4168 [Violet]蒲公英
    P3320 [SDOI2015]寻宝游戏
    P2487 [SDOI2011]拦截导弹
    P3338 [ZJOI2014]力(FFT)
    P1975 [国家集训队]排队
    P4103 [HEOI2014]大工程
    虚树小结
    LVS初步
    常见指针定义解读
    可epoll队列
  • 原文地址:https://www.cnblogs.com/slankka/p/10456083.html
Copyright © 2011-2022 走看看