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