如何对JVM性能进行优化

  

序言

JVM是Java虚拟机(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

引入Java语言虚拟机后,爪哇语言在不同平台上运行时不需要重新编译. Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

一、背景
使用JMeter对HTTP接口进行压力测试时,响应很慢。

二、定位问题思路
1,定位耗时的SQL
查看德鲁伊监控

2,定位JVM参数
(1)查看linux服务器的配置信息
# linux查看版本当前操作系统内核信息
uname -
# linux查看当前操作系统版本信息,
猫/proc/version
# linux查看版本当前操作系统发行版信息/etc/issue
猫或猫/etc/redhat-release
# linux查看cpu相关信息,包括型号,主频,内核信息等
猫/proc/cpuinfo 
# linux查看版本说明当前cpu运行在32位模式下,但不代表cpu不支持64位
getconf LONG_BIT 
#查看硬盘使用状况
df - h
#查看内存使用状况
免费14 - m

(2) JVM的内存使用情况
jps
jstat
动力系统
jmap
jhat
jstack

三,调优思路
(1) mysql
建立主键
建立索引

(2) tomcat中间件
调整服务器。xml的参数,如配置-Xms4096M -Xmx4096M


# #注册自定义URL处理程序这样做在这里自定义URL处理(特别是& # 39;战争:…& # 39;)可以使用在安全策略
JAVA_OPTS=懊涝狫AVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina。webresources -Xms4096M -Xmx4096M"
1
2
3

(3) jvm调整catalina.sh的Xmx和Xms

& lt; !——修改连接数限制,在
& lt;执行人
name=皌omcatThreadPool"
namePrefix=癱atalina-exec产生绯闻。
maxThreads=?00“
minSpareThreads=?0“
maxIdleTime=?0000“
prestartminSpareThreads=皌rue"
maxQueueSize=?00“
/祝辞

& lt; !——
maxThreads:最大并发数,默认设置200,一般建议在500 ~ 800年,根据硬件设施和业务来判断
minSpareThreads: Tomcat初始化时创建的线程数,默认设置25
maxIdleTime:如果当前线程大于初始化线程,那空闲线程存活的时间,单位毫秒,默认60000=60秒=1分钟。
prestartminSpareThreads:在Tomcat初始化的时候就初始化minSpareThreads的参数值,如果不等于真,minSpareThreads的值就没啥效果了
maxQueueSize:最大的等待队列数,超过则拒绝请求
,在

& lt; !——“Connector"代表一个端点的请求
接收和响应返回。文档:
Java HTTP连接器:/docs/配置/HTTP。html
Java连接器:美国/docs/config/美国。html
4月(HTTP/美国)连接器:/docs/4月。html
定义一个非ssl/TLS HTTP/1.1连接器在端口8080上
,在

& lt; !——参数优化配置——祝辞,
& lt;连接器
执行人=皌omcatThreadPool"
端口=?081“
协议=皁rg.apache.coyote.http11.Http11NioProtocol"
connectionTimeout=?0000“
maxConnections=?0000“
redirectPort=?443“
enableLookups=癴alse"
acceptCount=?00“
maxPostSize=?0485760“
maxHttpHeaderSize=?192“
压缩=爸?
disableUploadTimeout=皌rue"
compressionMinSize=?048“
acceptorThreadCount=?“
compressableMimeType=皌ext/html、文本/纯文本/css、javascript应用程序/,application/json, application/x-font-ttf、应用程序/x-font-otf,图像/svg + xml、图像/jpeg图像/png、gif图像/,/mpeg音频,视频/mp4"
URIEncoding=皍tf-8"
processorCache=?0000“
tcpNoDelay=皌rue"
connectionLinger=?”;/祝辞

& lt; !——
执行人:线程池模式
端口:应用端口
协议:Tomcat 8设置nio2更好
connectionTimeout:连接器接受一个连接后等待的时间(毫秒),默认值是60000。
maxConnections:这个值表示最多可以有多少个插座连接到Tomcat上
redirectPort:重定向https端口
enableLookups:禁用DNS查询
acceptCount:当Tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100。
maxPostSize:设置由容器解析的URL参数的最大长度,1(小于0)为禁用这个属性,默认为2097152(2米)
maxHttpHeaderSize: http请求头信息的最大程度,超过此长度的部分不予处理。一般8 k。
压缩:是否启用GZIP压缩在为启用(文本数据压缩)下为不启用,力压缩所有数据
disableUploadTimeout:这个标志允许servlet容器使用一个不同的,通常长在数据上传连接超时。如果不指定,这个属性被设置为真的,表示禁用该时间超时。

如何对JVM性能进行优化