服务相应迟钝,后怀疑可能是垃圾回收导致,进行如下测试:
1.首先增加垃圾回收日志记录,观察回收时间,后发现日志中每次垃圾回收都是几十秒的回收时间,这期间jvm是不能相应用户请求的,所以会导致明显卡顿。
2.增加JVM内存指定,增加相应调优参数,如下:
/usr/bin/java -classpath "$CLASSPATH" -Dfile.encoding=utf-8 -D64 -server -verbose:gc -Xloggc:/home/xxx/gc.log -Xms6144m -Xmx6144m -Xmn3584m -XX:SurvivorRatio=8 -XX:MaxPermSize=256m -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime com.xxx.xxx.xxx.Launcher application.xxx &
3.后重启服务,观察一段时间,之前频繁发生的用户端无响应问题没再发生。