• Tomcat 优化和性能监测


    1. JVM 优化(Tomcat 启动行参数)
    Linux 修改 catalin.sh
    Windows 修改 catalin.bat
     
    Linux系统中tomcat的启动参数
    复制代码
    export JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k -XX:+AggressiveOpts 
    -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+DisableExplicitGC
    -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
    -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection
    -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods
    -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true "
    复制代码
    Windows系统中tomcat的启动参数
    复制代码
    set JAVA_OPTS=-server -Xms1400M -Xmx1400M -Xss512k 
    -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M
    -XX:MaxPermSize=256M -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=31
    -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled
    -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m
    -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly
    -Djava.awt.headless=true
    复制代码
     
    -server 生产环境必须添加此参数,可以改变 Tomcat 的运行模式,更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量。
     
    -Xms–Xmx JVM内存设置,建议设置成同一个值,可以在命令行中使用 java -Xmx1500m -version 来测试当前服务器可以设置的最大内存。(-Xmx 的值太大时,JVM 无法启动)
     
    -Xmn 年轻代 整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m。
     
    -Xss 是指设定每个线程的堆栈大小。一般不超过 1M。
     
    -XX:+AggressiveOpts 根据 JDK 的不同而采用不同的优化策略。
     
    -XX:+UseBiasedLocking 优化线程锁。
     
    -XX:PermSize=128M-XX:MaxPermSize=256M 非堆内存初始值和最大值。默认值为物理内存的 1/64 和 1/4。
     
    -XX:+DisableExplicitGC 控制程序代码中不允许显示调用 System.gc()。
     
    -XX:+UseParNewGC 对年轻代采用多线程并行回收,这样收得快。
     
    -XX:+UseConcMarkSweepGC 使用更好的 GC 技术。
     
    -XX:+CMSParallelRemarkEnabled 在使用UseParNewGC 的情况下, 尽量减少 mark 的时间
     
    -XX:+UseCMSCompactAtFullCollection 减少 Memory 碎片。
     
    -XX:LargePageSizeInBytes 指定 Java heap 的分页页面大小
     
    -XX:+UseFastAccessorMethods get,set 方法转成本地代码
     
    -XX:+UseCMSInitiatingOccupancyOnly 指示只有在 oldgeneration 在使用了初始化的比例后concurrent collector 启动收集
     
    -XX:CMSInitiatingOccupancyFraction=70 年老代到 70% 满的时候开始执行对年老代的并发垃圾回收((Xmx-Xmn)*(100- CMSInitiatingOccupancyFraction)/100>=Xmn)
     
    -Djava.awt.headless=true 解决图片在 Linux 上无法显示图片的问题
     
    2.Tomcat容器内的优化
    修改 server.xml文件
    复制代码
    <Connector port="8080" protocol="HTTP/1.1"
      URIEncoding="UTF-8" minSpareThreads="25" maxSpareThreads="75"
      enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000"
      acceptCount="300" maxThreads="300" maxProcessors="1000" minProcessors="5"
      useURIValidationHack="false"
      compression="on" compressionMinSize="2048"
      compressableMimeType="text/html,text/xml,text/JavaScript,text/css,text/plain"
      redirectPort="8443"
    />
    复制代码
     
    URIEncoding="UTF-8"
     
    maxSpareThreads 最大空闲线程数,大于这个数将终止多余的线程。
     
    minSpareThreads 初始化线程数。
     
    enableLookups 不使用 Look。
     
    connectionTimeout 连接超时毫秒数。
     
    maxThreads 即 Tomcat 可创建的最大的线程数,即最大并发数。
     
    acceptCount 当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuse connection。
     
    maxProcessors与minProcessors 最大线程数和最小线程数。
     
    useURIValidationHack 减少对一些url的不必要的检查从而减省开销。
     
    enableLookups="false" 关闭DNS查询。
     
    disableUploadTimeout 
     
    compression 给Tomcat配置gzip压缩(HTTP压缩)功能。
     
    3.Tomcat 性能检测
     
    VisualVM监控( JDK 自带)
    推荐使用。
    内存分析,CPU 分析,线程分析等。
     
    LambdaProbe监控
    需要打成 war 放入 tomcat webapp 目录下。
     
    JProfiler监控
    商业的主要用于检查和跟踪系统的性能的工具。需要在服务器端安装 JProfiler 软件。
     
     
    参考:
  • 相关阅读:
    MxNet Windows下安装
    Binary Tree Postorder Traversal--leetcode难题讲解系列
    Populating Next Right Pointers in Each Node II--leetcode难题讲解系列
    Recover Binary Search Tree--leetcode难题讲解
    bash + script
    Linux笔记
    谷歌面经 Tree Serialization
    Python strange questions list
    bit操作 转
    ubuntu系统从中文环境改成英文环境
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/9026738.html
Copyright © 2020-2023  润新知