zoukankan      html  css  js  c++  java
  • Tomcat8性能优化之catalina.sh配置文件

    在catalina.sh中,新增以下配置项到文件开头

    #CATALINA_OPTS=
    "-server -d64 jvm运行为服务器模式,支持64位系统
    -verbose:class 显示jvm载入类的相关信息
    -verbose:gc 显示每次GC相关信息
    -Duser.timezone=Asia/Shanghai
    -Djava.awt.headless=true #启用该项,可解决报表不兼容的问题
    -Djava.security.egd=file:/dev/./urandom #替代默认的/dev/random阻塞生成因子
    -Xms1024m #堆的初始大小
    -Xmx1024m #堆的最大大小
    -Xss256k #每个线程的大小
    -Xmn384m #年轻代大小
    -XX:SurvivorRatio=8 #Eden区与Survivo区的比值
    -XX:TargetSurvivorRatio=80 当s区使用占比多少时,对其进行回收
    -XX:CICompilerCount=4 #编译器数目增加
    -XX:MaxTenuringThreshold=6 #晋升到老年代需要的存活次数
    -XX:InitialCodeCacheSize=32k 设置初始代码缓存的大小
    -XX:ReservedCodeCacheSize=256m 设置即时编译器的使用最大代码缓存大小
    -XX:+DisableExplicitGC #关闭System.gc()
    -XX:+AggressiveOpts #加快编译
    -XX:+UseBiasedLocking #锁机制的性能改善,增加偏向锁
    -XX:-UseAdaptiveSizePolicy #不启动自适应策略
    -XX:+HeapDumpOnOutOfMemoryError #在JVM崩溃时,可以dump出错误日志信息
    -XX:HeapDumpPath=${catalina.base}/logs/java_pid%p.hprof #dump错误信息日志信息存放的路径
    -XX:+PrintGCDetails #记录gc日志
    -XX:+PrintGCDateStamps #打印可读日期
    -Xnoclassgc #不做类的gc
    -XX:+UseConcMarkSweepGC #使用cms并发收集器
    -XX:+UseParNewGC 新生代使用该收集器进行垃圾回收
    -XX:MaxGCPauseMillis=300 进行垃圾回收时,最大暂停时间,单位毫秒
    -XX:LargePageSizeInBytes=0 jvm堆中页面的大小,为0则表示JVM自动设置页面大小
    -XX:+UseCMSInitiatingOccupancyOnly 当使用的内存大小到达一定数量的值后,才开始进行垃圾回收
    -XX:CMSInitiatingOccupancyFraction=90 #触发full gc的内存使用百分比
    -XX:+UseGCOverheadLimit #当垃圾回收耗费了98%的时间,但回收的内存不到2%时,jvm认为发生了OOM,可以起到预警的作用
    -XX:AllocatePrefetchDistance=512
    -XX:AllocatePrefetchStyle=2

    -XX:+PrintClassHistogram #当jvm收到SIGQUIT信号,打印类统计信息,如Ctrl+Break
    -XX:+ExplicitGCInvokesConcurrent -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses #启用这2项,可减少fullgc的卡顿时间
    -XX:+AlwaysPreTouch #启动时访问并置零内存页面,大堆时效果比较好
    "
    "
    -Xms:堆的初始大小,单位MB 配置-Xms与-Xmx一致,为可用内存的80%
    -XmX:堆的最大大小,单位MB
    -Xmn:新生代的初始大小,单位MB 为堆大小的3/8=24/64
    当业务中有数据量很大的文件需要导出时,需要调整以下2个参数的值,可避免出现OOM
    -XX:PermSize:持久代的初始大小,单位MB 为物理内存的1/64
    -XX:MaxPermSize:持久代的最大大小,单位MB 为物理内存的1/4=16/64
    -Xss:线程栈的大小,单位MB,如要调整,推荐1~2MB
    -XX:NewRatio:年老代与新生代的比值
    -XX:SurvivoRatio:Eden区与Survivo区的比值
    -XX:ParallelGCThreads 并行的线程数
    "
    # -----------------------------------------------------------------------------
    JAVA_OPTS="-server -d64 -Djava.awt.headless=true -verbose:class -verbose:gc -Duser.timezone=Asia/Shanghai -Djava.security.egd=file:/dev/./urandom"
    JAVA_OPTS="$JAVA_OPTS -Xms1g -Xmx1g -Xmn1024m -Xss512k -XX:SurvivorRatio=8"
    JAVA_OPTS="$JAVA_OPTS -XX:TargetSurvivorRatio=80 -XX:CICompilerCount=4 -XX:MaxTenuringThreshold=6 -XX:ParallelGCThreads=4"
    JAVA_OPTS="$JAVA_OPTS -XX:InitialCodeCacheSize=32k -XX:ReservedCodeCacheSize=256m"
    JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:-UseAdaptiveSizePolicy"
    JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/tomcat_admin/logs/java_pid%p.hprof"
    JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/usr/local/tomcat_admin/logs/gc.log"
    JAVA_OPTS="$JAVA_OPTS -Xnoclassgc -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:MaxGCPauseMillis=300 -XX:LargePageSizeInBytes=0"
    JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80"
    JAVA_OPTS="$JAVA_OPTS -XX:+UseGCOverheadLimit -XX:AllocatePrefetchDistance=512 -XX:AllocatePrefetchStyle=2""

  • 相关阅读:
    Android应用程序组件Content Provider简要介绍和学习计划
    本人其它博客
    Android应用程序组件Content Provider的启动过程源代码分析
    Android应用程序组件Content Provider应用实例
    Team Foundation Server 2010 Performance Tuning – Lessons learned
    Katapult:KDE 桌面辅佐序次
    Informix IDS 11系统打点(918考试)认证指南,第2局部系统活动监督(3)
    Amarok 1.4.6
    Informix IDS 11琐细管理(918测验)认证指南,第1部分IDS安设和设置(1)
    KTorrent 2.2 公布
  • 原文地址:https://www.cnblogs.com/NiceTime/p/6847991.html
Copyright © 2011-2022 走看看