Ash*_*osh 6 java tomcat garbage-collection jvm
请帮我解决一下情况.我有CentOS 4 GB RAM,Tomcat配置大约1500MB内存.在某些时候,我的机器在达到最大螺纹数量时就会挂起,即200.我们必须重新启动应用程序服务器才能再次运行.参数是:
JAVA_OPTS="-server -Xss128k -Xms2048m -Xmx2048m -XX:MaxPermSize=512m -XX:NewRatio=3 -XX:SurvivorRatio=6 -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:CMSInitiatingOccupancyFraction=80 -Dfile.encoding=UTF8"
Run Code Online (Sandbox Code Playgroud)
jvm mem详细信息粘贴在下面.堆
PSYoungGen total 435456K, used 73027K [0x00000000e0c00000, 0x00000000fb580000, 0x0000000100000000)
eden space 435200K, 16% used [0x00000000e0c00000,0x00000000e5350c70,0x00000000fb500000)
from space 256K, 0% used [0x00000000fb540000,0x00000000fb540000,0x00000000fb580000)
to space 256K, 88% used [0x00000000fb500000,0x00000000fb538600,0x00000000fb540000)
PSOldGen total 741376K, used 132680K [0x00000000a2400000, 0x00000000cf800000, 0x00000000e0c00000)
object space 741376K, 17% used [0x00000000a2400000,0x00000000aa592030,0x00000000cf800000)
PSPermGen total 22912K, used 22880K [0x0000000092400000, 0x0000000093a60000, 0x00000000a2400000)
object space 22912K, 99% used [0x0000000092400000,0x0000000093a58088,0x0000000093a60000)
Code Cache [0x00002aaaab021000, 0x00002aaaab311000, 0x00002aaaae021000)
total_blobs=1033 nmethods=670 adapters=317 free_code_cache=47372736 largest_free_block=12096
0x00002aaab41b7800 JavaThread ""http-apr-80"-exec-214" daemon [_thread_blocked, id=2636, stack(0x0000000043b06000,0x0000000043b27000)]
Run Code Online (Sandbox Code Playgroud)
我不认为你有记忆问题。
我认为您刚刚耗尽了tomcat 内部线程池中的可用线程。
如果 Tomcat 的内部请求处理线程池没有任何空闲线程来做更多工作,并且只是等待这种情况发生变化(可能永远),那么 Tomcat 就无法再处理请求。
我的猜测是,您的 Web 应用程序之一至少有一个servlet/jsp永远不会完成/返回。
进行线程转储来确认这一点,并轻松识别导致此问题的软件部分。