Java vm 速度变慢,所有线程都忙于字符串操作
2022-09-01 21:15:19
我遇到了一个非常奇特的问题。我的tomcat在大约25%的CPU 24/7下完美运行,但有时我的CPU高达60%,系统停止运行,无法恢复。
当我在减速期间进行线程转储时,几乎所有线程都忙于某种字符串或相关操作。
没有OutOfMemory错误或抛出任何异常,所有请求仍然被处理,但响应时间恶化到第n个程度,即使是亚秒级请求也会减慢到60秒甚至更长时间。
我的服务器配置如下:
Ubuntu 12.04.2 LTS
Linux 3.2.0-38-virtual #60-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
export JAVA_OPTS='-server
-Xms18g -Xmx18g
-XX:MaxPermSize=512m
-XX:ThreadStackSize=512
-XX:NewRatio=1
-XX:SurvivorRatio=4
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSClassUnloadingEnabled
-Xloggc:/usr/tomcat/logs/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintTenuringDistribution
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.awt.headless=true'
关于原因的任何想法?谢谢