tomcat jvm调优参数设置

# 优化参数
<Connector port="8080"   
          protocol="HTTP/1.1"   
          maxThreads="1000"   
          minSpareThreads="100"   
          acceptCount="1000"  
          maxConnections="1000"  
          connectionTimeout="20000"
          maxKeepAliveRequests="1"
          maxHttpHeaderSize="8192"  
          tcpNoDelay="true"  
          compression="on"  
          compressionMinSize="2048"  
          disableUploadTimeout="true"  
          redirectPort="8443"  
          enableLookups="false"  
          URIEncoding="UTF-8" />  

一般会调优这么几个参数

  • 1)maxThreads

注:连接器创建处理请求线程的最大数目,处理同事请求的最大数目,默认值为200  也有150等等,版本不一样默认值不一样,协议不一样默认值也不一样。 不是越大越好,需要考虑硬件

  • 2)minSpareThreads=”50″ :设置当前Tomcat初始化时创建的线程数,默认值为25
  • 3)acceptCount  排队的数量,排队如果超过这个数目,则直接拒绝      要考虑硬件以及服务的响应时间,消化的快慢来决定
  • 4)enableLookups    如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
  • 5)maxKeepAliveRequests=”1″ :nginx动态的转给tomcat,nginx是不能keepalive的,而tomcat端默认开启了keepalive,会等待keepalive的timeout,默认不设置就是使用connectionTimeout。所以必须设置tomcat的超时时间,并关闭tomcat的keepalive。否则会产生大量tomcat的socket timewait。maxKeepAliveRequests=”1”就可以避免tomcat产生大量的TIME_WAIT连接,从而从一定程度上避免tomcat假死。
  • 6)maxConnections:Tomcat最多能并发处理的请求(连接);    处理器并发处理的数量,会比maxThread更加准备的描述最大处理数   如果maxConnections 比maxThreads小的话,则真正起作用的就是maxConnections 多余的会被放到acceptCount里面,如果放不下则直接舍弃掉

JVM参数优化

先取一个参数设置的样例  这个是G1的参数设置的样例

JAVA_MEM_OPTS=" -server -XX:+UseG1GC -Xmx2G -XX:MaxGCPauseMillis=10 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=15 -XX:G1MaxNewSizePercent=30 -XX:SurvivorRatio=6 -XX:InitiatingHeapOccupancyPercent=30 -XX:G1MixedGCLiveThresholdPercent=50 -XX:G1HeapWastePercent=5 -XX:+PrintGCDetails -Xloggc:/Data/temp/gateway/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Data/temp/gateway/heapdump.hprof "

  1. -Xmx   最大堆大小  -Xms 初始大小。一般都设置成一样的大小,以防止频繁的更新设置,导致性能下降
  2. -Xmn  年轻代大小   如果并发比较大,且大部分对象创建之后就会很短时间需要回收的话,建议设置比较大一点,这样会防止晋升到老年代,导致FULLGC变多变慢
  3. -Xss  线程的栈大小,默认1M   根据实际的线程大小进行调整
  4. -XX:MaxPermSize   持久代大小,存储类信息,常量池、静态变量等。如果类加载器比较多,注意jvm会默认分配给每个加载器默认的大小空间,但是每个加载器之间是不能共享的。导致会可能发生持久代未满,但是抛出持久代已满的异常
  5. -XX:MaxTenuringThreshold=0:设置垃圾最大年龄   。如果设置比较大的话,可以增加对象在年轻代的时间。增加对象被YGC回收的几率。减少FullGC
  6. -XX:ParallelGCThreads=4   配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等 。如果当前步骤和业务线程并行的话,需要考虑留一下cpu时间给业务线程使用,控制业务线程的响应时间
  7. -XX:MaxGCPauseMillis=100 :设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。但是也不能设置的太短,否则GC回收的速度跟不上垃圾产生的速度,导致FullGC
  8. PrintGCDetails  打开GC日志记录
  9. HeapDumpOnOutOfMemoryError  堆溢出时,打印dump信息
  10. InitiatingHeapOccupancyPercent   启动并发GC周期时的堆内存占用百分比. G1之类的垃圾收集器用它来触发并发GC周期,基于整个堆的使用率,而不只是某一代内存的使用比. 值为 0 则表示”一直执行GC循环”. 默认值为 45.
  11. -XX:G1MixedGCLiveThresholdPercent:低于这个活跃度阈值的老年代分区都会被包含在混合收集的CSet中。默认值为85%
  12. -XX:G1HeapWastePercent=5:可回收的内存超过这个比例时,g1才开始mixed gc的周期,控制mixed gc  尽量不进行fullgc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值