博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java性能调优
阅读量:6412 次
发布时间:2019-06-23

本文共 3305 字,大约阅读时间需要 11 分钟。

一、Tomcat服务器

1、Jvm参数调优

Tomcat 的启动参数位于tomcat的安装目录\bin目录下,如果你是Linux操作系统就是catalina.sh文件,如果你是Windows操作系统那么 你需要改动的就是catalina.bat文件

JAVA_OPTS="$JAVA_OPTS -server -Xms4096m -Xmx4096m -Xmn1024m -Xss256K -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/gclogs/gc.log -Djava.awt.headless=true"

解释:

-server:更高的性能
-Xms4096m:初始堆内存4g
-Xmx4096m:最大堆内存4g
-Xmn1024m:年轻代1g
-Xss256K:每个线程占用的空间
-XX:+DisableExplicitGC:禁止显示调用gc
-XX:MaxTenuringThreshold=15:在年轻代存活次数
-XX:+UseParNewGC:对年轻代采用多线程并行回收
-XX:+UseConcMarkSweepGC:年老代采用CMS回收
-XX:+CMSParallelRemarkEnabled:在使用UseParNewGC 的情况下, 尽量减少 mark 的时间
-XX:+UseCMSCompactAtFullCollection:在使用concurrent gc 的情况下, 防止 memoryfragmention, 对live object 进行整理, 使 memory 碎片减少
-XX:LargePageSizeInBytes=128m:指定 Java heap的分页页面大小
-XX:+UseFastAccessorMethods:get,set 方法转成本地代码
-XX:+UseCMSInitiatingOccupancyOnly:指示只有在 oldgeneration 在使用了初始化的比例后concurrent collector 启动收集
-XX:CMSInitiatingOccupancyFraction=70:年老代到达70%进行gc
-Djava.awt.headless=true :Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。
-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/gclogs/gc.log:打印日志信息

备注:上面的收集器年轻代用的ParNewGC,年老代用的CMS;也可以用G1收集器

-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:GCPauseIntervalMillis=200

解释:

-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC #开启G1,这两个要同时使用
-XX:MaxGCPauseMillis=50 #暂停时间目标;
-XX:GCPauseIntervalMillis=200 #暂停间隔目标;

2、Connector优化

tomcat的安装目录\conf下面的server.xml

解释:

protocol:协议
connectionTimeout:连接超时时间毫秒数
URIEncoding:编码
maxThreads:Tomcat可创建的最大的线程数,即最大并发数
minSpareThreads:最小备用线程数,tomcat启动时的初始化的线程数。
maxSpareThreads:如果空闲状态的线程数多于设置的数目,则将这些线程中止,减少这个池中的线程总数
enableLookups:是否允许域名反查
acceptCount:当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuse connection
maxProcessors:最大连接数
minProcessors:初始化连接数
useURIValidationHack:对url进行检查
compression:启动压缩
compressionMinSize:2048当返回内容大于等于2kb启动压缩,到客户端在解压
compressableMimeType:压缩类型

二、Springboot项目

1、Jvm参数

springboot直接用jar包启动,在启动命令里面加参数,下面是例子:

nohup java -server -Xms4096m -Xmx4096m -Xmn1024m -Xss256K -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/gclogs/gc.log -Djava.awt.headless=true -jar mq.jar &

2、springboot对内置tomcat进行优化

在application.yml中配置

server:  tomcat:    uri-encoding: UTF-8    max-threads: 300    min-spare-threads: 25    max-connections: 1000    accept-count: 300  port: 8080  connection-timeout: 20000  compression:    enabled: true    mime-types: text/html,text/xml,text/JavaScript,text/css,text/plain    min-response-size: 2048

三、性能查看常用命令

注:128914是线程id

查看负载:w、uptime
查看cpu:top
内存:free
磁盘:df
IO:iostat、vmstat
查看gc情况: jstat -gc 128914 2000 2
查看堆栈情况:jstack 128914
分析gc日志:more gc.log
查看进程里面的所有线程情况:top -Hp 128914

转载于:https://www.cnblogs.com/zhangbin1989/p/9237974.html

你可能感兴趣的文章
Cygwin不好用
查看>>
jQuery插件之验证控件jquery.validate.js
查看>>
[经验]无线鼠标和无线键盘真的不能用了?——雷柏的重生之路~
查看>>
【转】plist涉及到沙盒的一个问题
查看>>
GNU make manual 翻译( 一百四十五)
查看>>
重构之美-走在Web标准化设计的路上[复杂表单]3 9 Update
查看>>
linux中的优先搜索树的实现--prio_tree【转】
查看>>
转载: 打造自己的asp.net验证控件
查看>>
重构之美-跨越Web标准,触碰语义网[开门见山:Microformat]
查看>>
git入门与实践【转】
查看>>
WPF 虚拟键盘
查看>>
储存卡无法打开专家教您怎么数据恢复
查看>>
彼得原理
查看>>
如何利用【百度地图API】,制作房产酒店地图?(下)——结合自己的数据库...
查看>>
[20171113]修改表结构删除列相关问题3.txt
查看>>
特征选择
查看>>
在Winform程序中设置管理员权限及为用户组添加写入权限
查看>>
RTMP直播到FMS中的AAC音频直播
查看>>
多能互补提速 加快我国能源转型和现代能源体系建设
查看>>
音乐闹钟
查看>>