记录 Linux环境下 web项目CPU爆表 “事故”,肇事者:GC

来源:互联网 发布:下载截图软件 编辑:程序博客网 时间:2024/04/30 21:04
笔者今天将新开发的项目部署到新服务器的时候,出现了个“奇怪”的现象。项目启动完毕后,一切正常。在运行其中一个项目的时候,突然出现卡格的现象,很久没有响应。于是通过top查看,发现tomcat进行的cpu竟然达到100+%!!

        这是在测试过程中不曾出现的,于是开始查看问题所在。

①top查看cpu情况,获取cpu爆表的进程id(pid)


②top -H -p 8413  查看导致cpu爆表的线程id(pid):8423
    将对于pid从十进制转换成十六进制


③使用jstack pid(进程号) > jstack_log.log
    jstack 6989 > a.txt
    将堆栈信息导出。查找nid=Ox20e7的信息
"VM Thread" prio=10 tid=0xf68e9400 nid=0x20e7 runnable

"GC task thread#0 (ParallelGC)" prio=10 tid=0xf680c400 nid=0x20df runnable

"GC task thread#1 (ParallelGC)" prio=10 tid=0xf680dc00 nid=0x20e0 runnable

"GC task thread#2 (ParallelGC)" prio=10 tid=0xf680f400 nid=0x20e1 runnable

"GC task thread#3 (ParallelGC)" prio=10 tid=0xf6810800 nid=0x20e2 runnable

"GC task thread#4 (ParallelGC)" prio=10 tid=0xf6812000 nid=0x20e3 runnable

"GC task thread#5 (ParallelGC)" prio=10 tid=0xf6813400 nid=0x20e4 runnable

"GC task thread#6 (ParallelGC)" prio=10 tid=0xf6814c00 nid=0x20e5 runnable

"GC task thread#7 (ParallelGC)" prio=10 tid=0xf6816000 nid=0x20e6 runnable

发现是GC导致的cpu过高的问题。

④然后笔者使用jstat -gc 8413 5000 进行观察
[root@cncln ~]# jstat -gc 8647 5000
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT   
 64.0   64.0   16.0   0.0   349376.0   0.0     699072.0   25557.0   65536.0 65536.0    344    0.748  331    73.973   74.721
 64.0  128.0   64.0   0.0   349248.0   0.0     699072.0   25556.1   65536.0 65536.0    366    0.781  353    78.904   79.685
128.0  128.0   48.0   0.0   349248.0   0.0     699072.0   25557.4   65536.0 65536.0    388    0.817  375    83.834   84.650
128.0  128.0   0.0    0.0   349248.0   0.0     699072.0   25559.9   65536.0 65536.0    411    0.852  398    88.979   89.831
128.0  128.0   0.0    0.0   349248.0   0.0     699072.0   25559.2   65536.0 65536.0    433    0.895  420    93.903   94.797
 64.0   64.0   0.0    0.0   349312.0   0.0     699072.0   25559.8   65536.0 65536.0    455    0.930  442    98.823   99.753
 64.0  128.0   0.0    0.0   349248.0   0.0     699072.0   25558.9   65536.0 65536.0    477    0.972  464   103.743  104.715
 64.0   64.0   0.0    0.0   349376.0   0.0     699072.0   25557.8   65536.0 65536.0    499    1.009  486   108.653  109.662
 64.0   64.0   0.0    0.0   349376.0   0.0     699072.0   25556.1   65536.0 65536.0    521    1.052  508   113.594  114.647
128.0  128.0   0.0    0.0   349248.0   0.0     699072.0   25554.7   65536.0 65536.0    543    1.099  530   118.535  119.634
 64.0   64.0   0.0    0.0   349376.0   0.0     699072.0   25553.5   65536.0 65536.0    565    1.143  552   123.468  124.610
128.0  128.0   0.0    0.0   349248.0   0.0     699072.0   25551.9   65536.0 65536.0    587    1.184  574   128.418  129.602
128.0  128.0   0.0    0.0   349248.0   0.0     699072.0   25550.2   65536.0 65536.0    609    1.220  596   133.351  134.571
128.0  128.0   0.0    0.0   349248.0   0.0     699072.0   25559.7   65536.0 65536.0    631    1.257  618   138.331  139.588
128.0  128.0   0.0    0.0   349248.0   0.0     699072.0   25555.9   65536.0 65536.0    653    1.299  640   143.263  144.561
128.0  128.0   0.0    0.0   349248.0   0.0     699072.0   25554.4   65536.0 65536.0    675    1.349  662   148.128  149.477
 64.0   64.0   64.0   0.0   349376.0   0.0     699072.0   25554.2   65536.0 65536.0    696    1.389  683   152.811  154.200
 64.0   64.0   0.0    0.0   349376.0   0.0     699072.0   25554.3   65536.0 65536.0    717    1.426  704   157.497  158.923
 64.0   64.0   48.0   0.0   349376.0   0.0     699072.0   25554.2   65536.0 65536.0    738    1.461  725   162.145  163.606
 64.0   64.0   0.0    0.0   349376.0   0.0     699072.0   25554.2   65536.0 65536.0    759    1.495  746   166.845  168.340
 64.0   64.0   0.0    0.0   349376.0   0.0     699072.0   25554.2   65536.0 65536.0    779    1.526  766   171.358  172.884
 64.0   64.0   16.0   0.0   349376.0   0.0     699072.0   25554.2   65536.0 65536.0    800    1.563  787   176.054  177.617
 64.0   64.0   0.0    0.0   349376.0   0.0     699072.0   25554.3   65536.0 65536.0    821    1.607  808   180.676  182.282
 64.0   64.0   0.0    0.0   349376.0   0.0     699072.0   25554.2   65536.0 65536.0    842    1.646  829   185.267  186.913
 64.0   64.0   0.0    0.0   349376.0   0.0     699072.0   25554.2   65536.0 65536.0    863    1.692  850   190.063  191.755
 64.0   64.0   0.0    0.0   349376.0   0.0     699072.0   25554.3   65536.0 65536.0    885    1.726  872   194.630  196.356
发现所有的年轻代,老年代以及持久代的容量一直不断在上升,直至持久代被占满,频繁的触发FGC。

⑤同时查看了gc日志,也证实了这一点,发现GC的频率很高。
发现一秒内竟然触发了5次Full GC

终于在确定了是tomcat内存不足导致的问题后,配置了tomcat的内存后重新启动,项目运行正常:)

附:
linux  tomcat  GC、内存配置
vim apache-tomcat-6.0.32/bin/catalina.sh
#JAVA_OPTS="-Xloggc:/usr/local/space/logs/gc_tomcat.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC "
JAVA_OPTS="-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m"

0 0
原创粉丝点击