精华内容
下载资源
问答
  • Linux Tomcat JVM 参数调优

    千次阅读 2017-10-18 17:15:24
    Linux JVM 参数调优 适用场景Tomcat 长期运行过程遇到Caused by: java.lang.OutOfMemoryError: PermGen space或java.lang.OutOfMemoryError: Java heap space错误。异常原因 PermGen space的全称是Permanent ...

    ——————————
    Linux Tomcat JVM 参数调优
    ——————————

    1. 适用场景

      Tomcat 长期运行过程遇到Caused by: java.lang.OutOfMemoryError: PermGen space或java.lang.OutOfMemoryError: Java heap space错误。
      
    2. 异常原因

      PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这块内存主要是被JVM存放Class和Meta信息的。
      Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同。
      GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,
      这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

    Java heap space:

    JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。

    Heap size 的大小是Young Generation 和Tenured Generaion 之和。JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。

    Heap Size 最大不要超过可用物理内存的80%

    一般的要将-Xms和-Xmx选项设置为相同(java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源)。而-Xmn为1/4的-Xmx值。

    个人对上面这句话做个补充,“推荐Xms和Xmx设置值为相同”,并不适用于所有情况,要根据实际情况而定。 当服务器多个tomcat同时运行时,(Xms要肯定小于Xmx)建议每个tomcat 设置 Xms = 1/2Xmx或2/3Xmx。理由是当某个tomcat高峰时,可以弹性分配内存空间。无可避免以上重新分配分隔内存的效率问题。

    1. 解决办法

      修改TOMCAT_HOME/bin/catalina.sh文件:

    # OS specific support.  $var _must_ be set to either true or false.
    JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true"
    
    cygwin=false
    
    darwin=false

    加入以上红色JAVA_OPTS行记录后重启tomcat服务,其中JAVA_OPTS各参数的具体数值大小须根据实际服务器物理内存大小进行分配。

    1. 监控JVM

      4.1 查看jdk安装路径

    可选择的命令:
    
    [root@iZ25bzw04lpZ /]# whereis java
    java: /usr/bin/java /usr/share/java
    
    [root@iZ25bzw04lpZ /]# echo $JAVA_HOME
    /usr/java/jdk1.7.0_67
    
    [root@iZ25bzw04lpZ /]# which java
    /usr/java/jdk1.7.0_67/bin/java
    
    [root@iZ25bzw04lpZ /]# echo $PATH
    /usr/java/jdk1.7.0_67/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    4.2 查看java进程

    采用jdk提供的jps(JavaVirtual Machine Process Status Tool)小工具,可查看当前Java进程。

    [root@iZ25bzw04lpZ /]# cd ./usr/java/jdk1.7.0_67/
    [root@iZ25bzw04lpZ jdk1.7.0_67]# ls -l
    total 19760
    drwxr-xr-x 2 root root     4096 Jul 10  2015 bin
    -rw-r--r-- 1 root root     3339 Jul 26  2014 COPYRIGHT
    drwxr-xr-x 4 root root     4096 Jul 10  2015 db
    drwxr-xr-x 3 root root     4096 Jul 10  2015 include
    drwxr-xr-x 5 root root     4096 Jul 10  2015 jre
    drwxr-xr-x 5 root root     4096 Jul 10  2015 lib
    -rw-r--r-- 1 root root       40 Jul 26  2014 LICENSE
    drwxr-xr-x 4 root root     4096 Jul 10  2015 man
    -rw-r--r-- 1 root root      114 Jul 26  2014 README.html
    -rw-r--r-- 1 root root      499 Jul 26  2014 release
    -rw-r--r-- 1 root root 19902868 Jul 26  2014 src.zip
    -rw-r--r-- 1 root root   110114 Jul 25  2014 THIRDPARTYLICENSEREADME-JAVAFX.txt
    -rw-r--r-- 1 root root   173559 Jul 26  2014 THIRDPARTYLICENSEREADME.txt
    进入JDK目录后,执行bin/jps -v:
    
    [root@iZ25bzw04lpZ jdk1.7.0_67]# bin/jps -v
    
    默认没有设置
    15257 Bootstrap -Djava.util.logging.config.file=/Data/tomcat7ssl/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/Data/tomcat7ssl/endorsed -Dcatalina.base=/Data/tomcat7ssl -Dcatalina.home=/Data/tomcat7ssl -Djava.io.tmpdir=/Data/tomcat7ssl/temp

    4.3 查看JVM的GC情况

    使用jstat工具查看,语法为:

    jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]参数解释:
    
    *Options   -选项,我们一般使用-gcutil查看GC情况
    
    vmid      -VM的进程号,即当前运行的java进程号
    
    interval   -间隔时间,单位为秒或毫秒
    
    [root@iZ25bzw04lpZ jdk1.7.0_67]# bin/jstat -gcutil 15257
      S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
      0.00  97.65  29.84  79.97  99.29     17    0.661     1    0.271    0.932

    设置完后

    18860 Bootstrap
    -Djava.util.logging.config.file=/Data/tomcat7ssl/conf/logging.properties
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms512m -Xmx3072m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.endorsed.dirs=/Data/tomcat7ssl/endorsed -Dcatalina.base=/Data/tomcat7ssl -Dcatalina.home=/Data/tomcat7ssl -Djava.io.tmpdir=/Data/tomcat7ssl/temp

    [root@iZ25bzw04lpZ jdk1.7.0_67]# bin/jstat -gcutil 18860 3000
      S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
      4.68   0.00  97.98  68.79  54.39     14    2.448     1    1.630    4.078

    参数说明如下:

    S0 -Heap上的Survivor space 0区已使用空间的百分比

    S1 -Heap上的Survivor space 1区已使用空间的百分比

    E -Heap上Eden space区已使用空间的百分比

    O -Heap上的Old space区已使用空间的百分比,达到100%,就是内存溢出了

    P -Perm space区已使用空间的百分比,达到100%,就是内存溢出了

    YGC -从应用程序启动到采样时发生Yang GC 的次数

    YGCT -从应用程序启动到采样时Yang GC所用的时间【单位秒】

    FGC -从应用程序启动到采样时Full GC的次数

    FGCT -从应用程序启动到采样时Full GC所用的时间

    GCT -从应用程序启动到采样时用于垃圾回收的总时间【单位秒】

    通过监控O、P数值情况,再次调整JAVA_OPTS相关参数大小达到优化目的。

    展开全文
  • linuxjvm 参数调优

    千次阅读 2019-09-13 08:27:45
    -Xms 启动应用时,JVM堆空间的初始大小值。  -Xmx 应用运行中,JVM堆空间的极限值。  -Xmn 堆空间的新生代空间大小。  -XX:PermSize永久存储区的大小  2.JVM性能诊断工具  基本工具:JPS ,JSTAT,JMAP ...

    1.基本概念。 
    JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn512m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCompressedOops 

    -server 启用能够执行优化的编译器。 

    -Xss 单个线程堆栈大小值。 

    -Xms 启动应用时,JVM堆空间的初始大小值。 

    -Xmx 应用运行中,JVM堆空间的极限值。 

    -Xmn 堆空间的新生代空间大小。 

    -XX:PermSize永久存储区的大小 

    2.JVM性能诊断工具 

    基本工具:JPS ,JSTAT,JMAP 

    Jstat( “Java Virtual Machine statistics monitoring tool” )是JDK自带的一个轻量级小工具。主要对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。 
    语法结构如下:jstat [Options] vmid [interval] [count] 
        Options -- 选项,我们一般使用 -gcutil 查看gc情况 
        vmid    -- VM的进程号,即当前运行的java进程号 
        interval-- 间隔时间,单位为毫秒 
        count   -- 打印次数,如果缺省则打印无数次 

    [haieradmin@PRRSTMSAPP bin]$ jstat -gcutil 13737
      S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
     15.57   0.00  15.38   4.10  97.47  93.77     94    0.804     2    0.017    0.821

        S0  -- Heap上的 Survivor space 0 区已使用空间的百分比 
        S1  -- Heap上的 Survivor space 1 区已使用空间的百分比 
        E   -- Heap上的 Eden space 区已使用空间的百分比 
        O   -- Heap上的 Old space 区已使用空间的百分比 
        P   -- Perm space 区已使用空间的百分比 
        YGC -- 从应用程序启动到采样时发生 Young GC 的次数 
        YGCT-- 从应用程序启动到采样时 Young GC 所用的时间(单位秒) 
        FGC -- 从应用程序启动到采样时发生 Full GC 的次数 
        FGCT-- 从应用程序启动到采样时 Full GC 所用的时间(单位秒) 
        GCT -- 从应用程序启动到采样时用于垃圾回收的总时间(单位秒) 


    jstat -gccapacity查看内存占用情况 
    [haieradmin@PRRSTMSAPP bin]$ jstat -gccapacity 13737
     NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC
    262144.0 262144.0 262144.0 26176.0 26176.0 209792.0  1835008.0  1835008.0  1835008.0  1835008.0      0.0 1083392.0  39652.0      0.0 1048576.0   4836.0     94     2 

    NGCMN Minimum new generation capacity (KB). 
    NGCMX Maximum new generation capacity (KB). 
    NGC Current new generation capacity (KB). 
    S0C Current survivor space 0 capacity (KB). 
    S1C Current survivor space 1 capacity (KB). 
    EC Current eden space capacity (KB). 
    OGCMN Minimum old generation capacity (KB). 
    OGCMX Maximum old generation capacity (KB). 
    OGC Current old generation capacity (KB). 
    OC Current old space capacity (KB). 
    PGCMN Minimum permanent generation capacity (KB). 
    PGCMX Maximum Permanent generation capacity (KB). 
    PGC Current Permanent generation capacity (KB). 
    PC Current Permanent space capacity (KB). 
    YGC Number of Young generation GC Events. 
    FGC Number of Full GC Events. 

    jmap 
    jmap 是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。 
    使用方法 
    jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。 
    jmap -dump:format=b,file=f1 PID可以将该PID进程的内存heap输出出来到f1文件里。 

    集成工具: JConsole,jvisualvm 

    转载于:https://my.oschina.net/u/3775800/blog/3077157

    展开全文
  • linuxJVM参数调优配置export JAVA_OPTS=

    千次阅读 2020-04-23 09:56:05
    -XX:+HeapDumpOnOutOfMemoryError 设置 1、配置方法 在JAVA_OPTIONS变量中增加 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目录}。 例如:export JAVA_OPTS="-Xms2048M -Xmx2048M -Xmn682M -XX:...

    -XX:+HeapDumpOnOutOfMemoryError 设置

    1、配置方法
    
        在JAVA_OPTIONS变量中增加
    
        -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=${目录}。
        例如:export JAVA_OPTS="-Xms2048M -Xmx2048M -Xmn682M -XX:MaxPermSize=96M"
    
     2、参数说明
    
    (1)-XX:+HeapDumpOnOutOfMemoryError参数表示当JVM发生OOM时,自动生成DUMP文件。
    
    (2)-XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称,例如:-XX:HeapDumpPath=${目录}/java_heapdump.hprof。如果不指定文件名,默认为:java_<pid>_<date>_<time>_heapDump.hprof。
    展开全文
  • 配置方法 在JAVA_OPTIONS变量中增加 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目录}。 例如:export JAVA_OPTS="-Xms2048M -Xmx2048M -Xmn682M -XX:MaxPermSize=96M"  2、参数说明 (1)-XX:+...
    配置方法
    
        在JAVA_OPTIONS变量中增加
    
        -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=${目录}。
        例如:export JAVA_OPTS="-Xms2048M -Xmx2048M -Xmn682M -XX:MaxPermSize=96M"
    
     2、参数说明
    
    (1)-XX:+HeapDumpOnOutOfMemoryError参数表示当JVM发生OOM时,自动生成DUMP文件。
    
    (2)-XX:HeapDumpPath=${目录}参数表示生成DUMP文件的路径,也可以指定文件名称
    展开全文
  • 正确配置JVM参数-附JVM参数详解

    千次阅读 2020-05-19 21:28:00
    JVM参数类型 标准参数(-) 所有的JVM实现都必须实现这些参数的功能,而且向后兼容。 非标准参数(-X) 默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容。 非Stable参数(-XX) 此类...
  • linux 查看JVM默认参数 (centos7)

    千次阅读 2020-05-15 13:42:35
    咱们也得知道如何查看JVM默认参数,以及如何修改相应的JVM参数 # 查看命令 1. 显示出JVM初始化完毕后所有跟最初的默认值不同的参数及它们的值 java -XX:+PrintCommandLineFlags -version 2. 显示在处理参数之前...
  • Linux 下tomcat设置JVM参数

    千次阅读 2017-05-16 19:56:25
     GC时间的开始时间,相对于JVM的启动时间,单位是秒(Measured in seconds). GC 用来区分(distinguish)是 Minor GC 还是 Full GC 的标志(Flag). 这里的  GC  表明本次发生的是 Minor GC. Allocation ...
  • tomcat配置jvm参数

    千次阅读 2020-05-29 16:44:11
    配置jvm参数位置不同,所需要的启动方式也不同 tomcat版本8.5 1、windows环境 几种方法之间可能会有重复、还没起细研究 方法一、通过bin目录下的tomcat8.exe启动 直接在java options中添加jvm参数以key=value的形式...
  • 在tomcat的bin目录下的startup.sh中设置jvm参数:JAVA_OPTS="-server -XX:+PrintGCDetails -Xmx4g -Xms4g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+...
  • jvm参数设置

    2013-01-23 17:30:11
    linuxjvm基本参数设置 查看linux jvm设置基本命令
  • jetty启动配置JVM参数

    千次阅读 2018-12-07 10:45:45
    cd到start.jar所在目录,jetty的webapps的父目录 运行命令 java -jar start.jar --add-to-start=jvm ...注意:记得把--exec这个参数取消注释,官方解释是想要在ini文件里面加JVM参数配置,就要加上--e...
  • // 查看java版本 -version // help命令就不用了说了吧 -help // -server // 指定类运行所依赖其他类的路径,通常是类库和jar包,需要全路径到jar包,多个jar包之间连接符, ...”.Linux下使用“:” -cp
  • jetty配置JVM参数

    2021-04-08 14:43:18
    要在jetty中配置JVM参数,需要切换到start.jar的目录,运行命令java -jar start.jar --add-to-start=jvm,这个命令会帮助我们在start.ini里面添加上一些JVM默认参数(注释状态),当我们想用那些参数时,把相关注解...
  • 设置JVM参数

    2019-10-28 09:52:46
    eclipse中设置jvm参数 1)、Window → preferences,这么设置适用于eclipse中所有项目 2)、选中类(eg:Test.class)→ 右键Run As→ Run Configurations,(如果Java Application中没有Test,则先运行一下Test...
  • Linux(CentOS)的Tomcat配置JVM参数–获取dump文件 说明:CentOS下已经部署好“JProfiler+Tomcat+War包服务”,war包中有一段内存泄漏的方法,catalina.sh文件配置了“获取heap dump文件”的配置。通过实际模拟抓取...
  • 所以如果我们想要修改jvm的内存配置,那么我们就需要修改setenv.sh文件(默认没有,需新建一个setenv.sh),写入(大小根据自己情况修改):setenv.sh内容如下:   export CATALINA_OPTS="$CATALIN...
  • linux下tomcat设置jvm参数

    万次阅读 2019-05-14 10:02:38
    tomcat启动执行的是 tomcat/bin/startup.sh, startup.sh执行的是catalina.sh ...在Tomcat服务器上设置JVM参数 set CATALINA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m 或者 set JAVA_OPTS=-Xmx512m -Xms512m -Xmn64...
  • 在windows 环境下,tomcat的JVM 参数做了如下的配置   set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m   在linux下的配置则为: JAVA_OPTS=‘ -server -Xms...
  • tomcat 的 catalina.sh 文件或 start.sh 参数解释 JAVA_OPTS=" -Xms6g -Xmx6g -Xmn2g -Xss128k -XX:PermSize=64m -XX:MaxPermSize=256m -XX:SurvivorRatio=6 -XX:ParallelGCThreads=8 -Djava.rmi....
  • linux下修改jvm参数

    千次阅读 2019-11-17 19:13:11
    vim /etc/profile 加入以下代码 export JAVA_OPTIONS=-Xms512m -Xmx512m
  • 1、为什么要设置JVM参数? 各种环境代码运行在我们的 JVM中,Web 服务响应时间,运行稳定都与我们的 JVM 密切相关,JVM运行状态对我们 Web 服务表现正相关。 2、如何进行 JVM 的设置? 找到 tomcat 在本地电脑中...
  • 设置jvm参数

    2019-03-14 10:28:34
    2、Windows服务器下安装版Tomcat,可使用Tomcat7w.exe工具(tomcat目录下)和直接修改注册表两种方式修改Jvm参数; 3、Windows服务器解压版Tomcat注册Windows服务,方法同上; 4、解压版本的Tomcat, 通过startu...
  • bin/catalina.sh 最上面一行添加如下 JAVA_OPTS="JAVAOPTS−Duser.timezone=GMT+08"JAVAOPTS="{JAVA_OPTS} -Duser.timezone=GMT+08" JAVA_OPTS="JAVAO​PTS−Duser.timezone=GMT+08"JAVAO​PTS="{JAVA_OPTS} -...
  • tomcat 配置jvm参数

    2018-10-17 14:45:00
    设置JVM参数在Windows下,在$TOMCAT_HOME/bin/catalina.bat,Linux下,在$TOMCAT_HOME/bin/catalina.sh的前面,增加如下设置: JAVA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m" 转载于:...
  • linux 下如何设置JVM 常用参数

    万次阅读 2019-08-18 10:11:28
    待完善。
  • Tomcat设置Jvm参数

    千次阅读 2018-11-06 11:40:48
    由于启动服务的时候报了错,所以找原因呀,找到了...一、各参数的比例 -Xms是设置内存初始化的大小 -Xmx是设置最大能够使用内存的大小(最好不要超过物理内存大小) Xmx 与PermSize的和不可超过JVM可获得的总内...
  • Tomcat配置JVM参数

    2021-03-08 21:51:25
    1.linux版 编辑catalina.sh文件,在cygwin=false前添加 JAVA_OPTS="-XX:PermSize=256m -XX:MaxPermSize=512m -Xms512m -Xmx4096m -Xss1024k" 主要是调整Xmx1024m,调整为4G(即Xmx4096m),一般都够用了。 2....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,178
精华内容 29,271
关键字:

linux配置jvm参数

linux 订阅