JAVA企業級應用Tomcat實戰


tomcat簡介+安裝+調優  以下的url寫的很詳細

http://blog.oldboyedu.com/java-tomcat/

tomcat檢查排錯工具

查看fgc次數
#jstat -gcutil pid 1000
[root@iZ2zehet7zctyv30e767syZ conf]# jstat -gcutil 29748 1000
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
 12.55   0.00  22.01  21.06   3.18     18    2.036    62  250.969  253.006
 12.55   0.00  22.01  21.06   3.18     18    2.036    62  250.969  253.006
 12.55   0.00  22.01  21.06   3.18     18    2.036    62  250.969  253.006
FGC: FGC的次數 這個值很大的話 會導致cpu負載升高 需要查看是否有內存泄漏
FGCT: FGC的時間

查看年輕帶,老年代,持久帶的內存分配和使用情況

#jmap -heap pid
[root@iZ2zehet7zctyv30e767syZ conf]# jmap -heap 29748 Attaching to process ID 29748, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.75-b04 using thread-local object allocation. Parallel GC with 8 thread(s) Heap Configuration: MinHeapFreeRatio = 0 MaxHeapFreeRatio = 100 MaxHeapSize = 2147483648 (2048.0MB) NewSize = 1310720 (1.25MB) MaxNewSize = 17592186044415 MB OldSize = 5439488 (5.1875MB) NewRatio = 2 SurvivorRatio = 8 PermSize = 1073741824 (1024.0MB) MaxPermSize = 1073741824 (1024.0MB) G1HeapRegionSize = 0 (0.0MB) Heap Usage: PS Young Generation Eden Space: #新生代 capacity = 239075328 (228.0MB) used = 57453560 (54.79198455810547MB) free = 181621768 (173.20801544189453MB) 24.03157217460766% used From Space: capacity = 238551040 (227.5MB) used = 29933776 (28.547073364257812MB) free = 208617264 (198.9529266357422MB) 12.548164116157281% used To Space: capacity = 238551040 (227.5MB) used = 0 (0.0MB) free = 238551040 (227.5MB) 0.0% used PS Old Generation #年老帶 capacity = 901775360 (860.0MB) used = 189952728 (181.15303802490234MB) free = 711822632 (678.8469619750977MB) 21.06430674708167% used PS Perm Generation #持久帶 capacity = 1073741824 (1024.0MB) used = 34181336 (32.597862243652344MB) free = 1039560488 (991.4021377563477MB) 3.183384984731674% used

介紹三個代的博客

http://blog.163.com/bobile45@126/blog/static/960619922015104113740469/

tomcat其他拍錯檢查工具

http://blog.csdn.net/u013516966/article/details/76283793

使用Eclipse Memory Analyzer分析Tomcat內存溢出

eclipse下載地址:
點擊 downLoad 64bit即可
 
1.配置tomcat,當出現內存溢出時生成dump快照
catalina.sh  增加如下配置 
JAVA_OPTS='-XX:HeapDumpPath=/home/qiqi/memerylog'

2. 安裝eclipse 並安裝插件Memory Analyzer

安裝eclipse的時候需要先安裝jdk,並配置好環境變量
安裝插件方法如下:
Help-Eclipse Marketplace- 在find的位置輸入“Memory Analyzer”-然后搜素 會出現這個插件-點擊install 安裝即可-提示restart now 重啟軟件 重啟即可

 

打開dump快照的方法:
file-open file - 選擇dump快照(java_pid29748.hprof)-打開
**快照通常會比較大,耗費內存和cpu,如果eclipse打不開 就進入其安裝目錄 修改 eclipse里的內存配置  eplipse.ini文件
 打開后如下圖所示  是一個餅圖

點擊占用內存較大位置的餅圖,查看對應的類,截圖給開發,運維的工作完成。

 cpu負載過高,就重啟tomcat的腳本

有時候一時半刻解決不了,只能當cpu負載過高的時候重啟一下tomcat 腳本內容如下:

#!/bin/bash
#created by qiqi 20170808
#description:when cpu load  too high,restart tomcat
source /etc/profile
nowtime=`date +%Y-%m-%d-%H:%M:%S`
# 查找平均負載
load_num=`/usr/bin/uptime | awk '{print $11}' | awk -F . '{print $1}'`
#echo $load_num
if  [ ${load_num} -ge 4 ]
then
                echo "進行重啟操作 time:${nowtime}"
                pid=`ps -ef  | grep tomcat | grep '/data/tomcat/temp' | grep -v grep | awk '{print $2}'`
                echo "the tomcat pid is $pid"

                if [ -n "$pid" ];then
                   sleep 1
                   pid=`ps -ef  | grep tomcat | grep '/data/tomcat/temp' | grep -v grep | awk '{print $2}'`
                   if [ -n "$pid" ]; then
                          sleep 1
                          echo "tomcat進程將被殺死."  
                          kill -9 $pid
                   fi
                   sleep 1

                   echo "tomcat進程已經被殺死,先重新啟動tomcat."   
                   /data/tomcat/bin/startup.sh
                else
                        echo "tomcat進程不存在,先重新啟動tomcat."  
                        /data/tomcat/bin/startup.sh
                fi
else
        echo "load:${load_num},time:${nowtime}" 
fi

echo "<<=========================================================>>"

添加到計划任務:

#每10分鍾檢測一次 cpu的負載情況
*/10 * * * * /home/qiqi/restart_tomcat.sh >> /home/qiqi/log

日志顯示如下:

load:0,time:2018-03-14-20:30:01
<<=========================================================>>
load:0,time:2018-03-14-20:40:01
<<=========================================================>>
load:0,time:2018-03-14-20:50:01
<<=========================================================>>
load:0,time:2018-03-14-21:00:01
<<=========================================================>>
load:0,time:2018-03-14-21:10:01
<<=========================================================>>
load:0,time:2018-03-14-21:20:01
<<=========================================================>>
load:0,time:2018-03-14-21:30:01
<<=========================================================>>
進行重啟操作 time:2018-03-14-21:40:01
the tomcat pid is 7929
tomcat進程將被殺死.
tomcat進程已經被殺死,先重新啟動tomcat.
Tomcat started.
<<=========================================================>>
load:0,time:2018-03-14-21:50:01
<<=========================================================>>
load:0,time:2018-03-14-22:00:01


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM