記錄 Linux環境下 web項目CPU爆表 「事故」,肇事者:GC

        筆者今天將新開發的項目部署到新服務器的時候,出現了個「奇怪」的現象。項目啓動完畢後,一切正常。在運行其中一個項目的時候,忽然出現卡格的現象,好久沒有響應。因而經過top查看,發現tomcat進行的cpu居然達到100+%!! linux

        這是在測試過程當中未曾出現的,因而開始查看問題所在。 apache

①top查看cpu狀況,獲取cpu爆表的進程id(pid) vim


②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內存不足致使的問題後,配置了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" 測試

相關文章
相關標籤/搜索