• 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
  • 相关阅读:
    Spark 基本概念及入门
    Cron 表达式详解
    VmWare 网络模式
    微信、支付宝各种支付退款
    Spring Security OAuth2 SSO 单点登录
    Git 入门详解
    基于Spring Boot 2.x 的 Spring Cloud Admin 实践
    Git 提交规范
    Linux 安装 Mysql8.0
    Docker入门
  • 原文地址:https://www.cnblogs.com/lazyball/p/8572835.html
Copyright © 2020-2023  润新知