tomcat(五) JVM优化以及监控

一、并发优化

1、并发参数

  • 1、maxThreads:最大的并发请求数,当cpu利用率高的时候,不宜增加线程的个数,当cpu利用率不高,大部分是io阻塞类的操作时,可以适当增加该值
  • 2、maxSpareThreads:Tomcat连接器的最大空闲 socket 线程数
  • 3、acceptCount:当处理任务的线程数达到最大时,接受排队的请求个数
  • 4、connectionTimeout:网络连接超时,单位毫秒
  • 5、enableLookups:若为false则不进行DNS查询,提高业务能力应设置为false
  • 6、disableUploadTimeout:若为true则禁用上传超时

2、tomcat并发设置

 在conf下的server.xml文件中<Connector>节点进行配置
    <Connector port="8080" protocol="HTTP/1.1"
         connectionTimeout="30000"
         redirectPort="8443"
         maxThreads="400"
         minSpareThreads="50"
         maxSpareThreads="200"
         acceptCount="400"
         enableLookups="false"
         disableUploadTimeout="true"     />

二、内存优化

1、对象的生存空间分类

  • 新生代:用于存放“早逝”对象(即瞬时对象)。例如:在创建对象时或者调用方法时使用的临时对象或局部变量
  • 老年代:用于存放“驻留”对象(即较长时间被引用的对象)。往往体现为一个大型程序中的全局对象或长时间被使用的对象
  • 持久代:用于存放“永久”对象。这些对象管理着运行于JVM中的类和方法

2、存在参数

  • -server:一定要作为第一个参数,在多个CPU时性能佳
  • -Xms:新生代和老年代初始大小。 默认是物理内存的1/64
  • -Xmx:总共可用的最大空间。建议均设为物理内存的一半。不可超过物理内存
  • -XX:NewSize:新生代的初始空间
  • -XX:MaxNewSize:新生代的最大空间
  • -XX:PermSize:设定内存的持久代初始大小。缺省值为64M
  • -XX:MaxPermSize:设定内存的持久代最大大小。缺省值为64M
  • -Xmn:young generation(年轻代)的heap大小。一般设置为Xmx的3、4分之一

3、tomcat内存配置

  • 方法1
    在bin下的catalina.bat文件中echo Using CATALINA_BASE字段进行配置
在"%CATALINA_BASE%"的前一行加入如下代码
set JAVA_OPTS=%JAVA_OPTS% -server -Xms8192m -Xmx8192m -Xmn1890m 
  • 方法2
    在tomcat启动脚本中添加一个执行环境变量的脚本
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"

/bin/setenv.sh

JRE_HOME='/data/app/jdk1.8.0_77'
JAVA_OPTS='-Duser.timezone=GMT+08  -Xms6G -Xmx6G'

JAVA_OPTS对本机上的所有java虚拟机均有效
CATALINA_OPTS仅仅对运行tomcat实例的java虚拟机有效

三、JVM垃圾回收机制

1、jvm垃圾回收参数

  • -verbose:gc:显示垃圾收集信息(在虚拟机发生内存回收时在输出设备显示信息)
  • UseConcMarkSweepGC:开启此参数使用ParNew & CMS(serial old为替补)搜集器
  • MaxTenuringThreshold:晋升老年代的最大年龄。默认为15,比如设为10,则对象在10次普通GC后将会被放入年老代
  • -XX:+ExplicitGCInvokesConcurrent:System.gc()可以与应用程序并发执行
  • GCTimeRatio:设置系统的吞吐量。比如设为99,则GC时间比为1/1+99=1%,也就是要求吞吐量为99%。若无法满足会缩小新生代大小
  • CMSInitiatingOccupancyFraction:触发CMS收集器的内存比例。比如60%的意思就是说,当内存达到60%,就会开始进行CMS并发收集
  • CMSFullGCsBeforeCompaction:设置在几次CMS垃圾收集后,触发一次内存整理
  • -Xnoclassgc:禁用类垃圾回收,性能会高一点

2、垃圾回收配置

垃圾回收配置往往和内存配置是在同一字段,并且要写在同一行才能生效

set JAVA_OPTS=%JAVA_OPTS% 
-server -Xms8192m -Xmx8192m -Xmn1890m -verbose:gc 
-XX:+UseConcMarkSweepGC -XX:MaxTenuringThreshold=5 -XX:+ExplicitGCInvokesConcurrent -XX:GCTimeRatio=19 -XX:CMSInitiatingOccupancyFraction=70 -XX:CMSFullGCsBeforeCompaction=0 -Xnoclassgc -XX:SoftRefLRUPolicyMSPerMB=0

四、java性能监控工具

1、java常见性能问题

  • 内存不足
  • 内存泄露
  • 线程锁死
  • 锁竞争
  • java消耗过多的cpu

2、常用性能工具

jps

监控jvm进程状态信息

jps [options] [hostid]
	-m:输出传入main方法的参数
	-j:显示main类或jar的完全限定名称
	-v:为jvm指定的参数

jstack

查看某个java进程内的线程堆栈信息

jstack [options] pid

jmap

查看某个java进程堆进程使用情况

jmap [options] pid
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值