系统卡住,页面一直转。 看tomcat日志,没报异常,也没干什么。 jstack看线程状态,发现有一些BLOCK线程,各种奇怪的方法被BLOCK。
一脸懵逼~~
又执行一次jstack,发现BLOCK的线程又变了~
一脸懵逼~
搜了几下,想起FULL GC会引起全局锁,是不是GC闹的~
发现tomcat没打GC日志,加上这个:
JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/gclog -Xloggc:/opt/gclog/platform.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:-PrintTenuringDistribution"
启动,发现
2019-06-14T23:59:17.542+0800: 14.803: [GC (Metadata GC Threshold) [PSYoungGen: 333413K->40312K(3910656K)] 355751K->62650K(6707200K), 0.0358259 secs] [Times: user=0.20 sys=0.04, real=0.04 secs]
2019-06-14T23:59:17.578+0800: 14.839: [Full GC (Metadata GC Threshold) [PSYoungGen: 40312K->0K(3910656K)] [ParOldGen: 22337K->59754K(2796544K)] 62650K->59754K(6707200K), [Metaspace: 34745K->34745K(1081344K)], 0.1875534 secs] [Times: user=1.03 sys=0.05, real=0.19 secs]
2019-06-14T23:59:28.031+0800: 25.293: [GC (Metadata GC Threshold) [PSYoungGen: 1668470K->46044K(3910656K)] 1728225K->105826K(6707200K), 0.0686228 secs] [Times: user=0.29 sys=0.04, real=0.07 secs]
上来就GC,发现是Metadata GC Threshold,不是普通的堆GC。
启动脚本里写的-XX:PermSize=64M -XX:MaxPermSize=256m
这东西JDK8里好像被抛弃了,等于没用。
搜了下,是-XX:MetaspaceSize=128M 这样写。
加上启动,貌似OK了~
再观察~
|