遇到个问题,服务器load非常高,晚上会下降不少,第二天照旧,cpu在繁忙时基本上能占到100%,如果重启,会短暂恢复,几天内load又会变得越来越高,跟踪线程栈找CPU占用高的发现都是work线程,诡异的是他们处在waiting状态啊!而且是占用时间非常长,十几个小时。 推测还是代码问题,什么情况会导致这种问题呢,无头绪啊,求大神 |
|
5分 |
可以看看代码里调用wait的地方,什么情况下导致这么多wait的线程。
|
15分 |
这种情况表面很难看出问题,可以试着从以下方面入手:
1、Tomcat最大连接线程数设了多少? 2、Tomcat版本多少?JDK版本多少?JDK和操作系统位数多少? 3、在峰值时查一下Tomcat端口连接数多少(外界访问客户端数)? 4、最后一个最大也是最有可能发生的因素,跟踪和找出慢业务。 提供两个跟踪方法: |
5分 |
按照楼上仁兄的试一试
|
处于waitting状态是因为dump的时候恰好处于这种状态,其他时间是处于runnable
|
|
使用ps -eLf命令拿到的线程运行占用cpu时间,这个时间什么时候会被重置呢??
|
|
15分 |
|