各位好:
我现在有一个问题。我的代码
@RequestMapping(value = "{cityname}/{id}", method = { RequestMethod.GET})
public String showOneGroupInfo(@PathVariable String cityname, @PathVariable long id, HttpServletRequest request, HttpServletResponse response, ModelMap model) {
System.out.println("什么都没有,现在是个空类");
return null;
}
现在就是这样的一个代码。 我访问http://XXX/ma/111 我这样访问的时候, 我观察linux下(top)。cpu一直处于700-800 之间。负载均衡也再20多,太不正常了。 各位帮帮忙!!!谢谢!
定位Java CPU高的线程的方法
1,找到Java PID:ps -ef | grep java
2,找到CPU最高的线程:top -Hp $pid,然后按 Shift T
3,将得到的线程ID转换为十六进制。
4,执行JStack,拿到所有线程状态,然后基于十六进制的线程ID进行搜索,看下当前线程正在执行什么操作。
注意:
1,如果CPU 100%时,此时执行jstack可能无法成功。这个时候记得看下gc.log日志,如果CPU持续100%很可能是在频繁FullGC。
top - 22:23:04 up 12:16, 8 users, load average: 22.49, 7.66, 4.51
Tasks: 143 total, 1 running, 139 sleeping, 3 stopped, 0 zombie
Cpu(s): 2.9%us, 0.3%sy, 0.0%ni, 96.6%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 6089996k total, 4759660k used, 1330336k free, 27352k buffers
Swap: 5920764k total, 36760k used, 5884004k free, 468112k cached
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。