哇,这个复杂了线程挂起的的原因还是很多的,大概以下几点,可慢慢尝试排除: 1、程序出现死循环,这个检查一下cpu使用率,要是Cpu使用率到达100%,就有可能这个原因;2、程序所用之sql问题,长时间无返回导致线程挂起,检查一下数据库服务器是否有这样的session,顺便问下你用的什么数据库;3、...
显示全部哇,这个复杂了
线程挂起的的原因还是很多的,大概以下几点,可慢慢尝试排除:
1、程序出现死循环,这个检查一下cpu使用率,要是Cpu使用率到达100%,就有可能这个原因;
2、程序所用之sql问题,长时间无返回导致线程挂起,检查一下数据库服务器是否有这样的session,顺便问下你用的什么数据库;
3、HeapSize设置问题,太小会导致垃圾回收频繁,导致反应过慢,这个也常常导致Cpu使用率极高,最后搞到java core dump了,你可以dump文件传上来让大家看一眼;调整的话Max HeapSize你可以调到1G看看,前提是要看你有多少内存了,如果只有2g你就不要乱来了。
4、有些人认为和线程池大小有关,看你的Log如果只有2个线程挂起就导致系统无法连接的话,可以尝试把最大线程提高点看看了,可以到 “应用程序服务器-》server_name-》线程池-》WebContainer ”去调整
5、如果生成了dump文件的话,就可以分析文件,更准确一些;
不过基本上来讲,大家的意见是应该算一致的,调整参数可以减缓挂掉的频率,要彻底解决应该从应用程序着手
收起