java相关参数
java相关参数
官方文档:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
选项分类
- -选项名称: 标准选项,所有HotSpot都支持
- -X选项名称: 非标准选项,稳定的
- -XX:选项名称: 非标准选项,不稳定的,下个版本可能会取消
查看java选项帮助:
java -h #查看标准选项
java -X #查看稳定非标准选项
java -XX:+PrintFlagsFinal 2>/dev/null #不稳定选项
java -XX:+PrintCommandLineFlags 2>/dev/null #当前运行的选项
常用选项:
-Xms4g 初始化的Heap内存(年轻代+老年代)
-Xmx4g jvm最大内存(新+老+永久),不建议超过32G,因为内存管理效率下降。一般建议初始化与最大设成一样,避免内存碎片、浪费申请时间
-XX:NewSize=128m 年轻代初始大小
-XX:MaxNewSize=256m 年轻代最大大小
-Xmn1g 年轻代的初始和最大固定1g
-XX:NewRatio=1/2 比例方式设置年轻代与老年代大小,如:2或1/2(新分1,老分2)
-XX:SurvivorRation=6/1 比例设置eden和幸存区大小
-XSS256k 设置每个线程私有的栈空间大小,依据具体线程大小和数量
-XX:+PrintGCDetails 打印代码运行信息
-XX:+HeapDumpOnOutOfMemoryError 把heap的oom错误打印到文本
tomcat性能优化常用配置:
内存空间优化:
JAVA_OPTS="-server -Xms4g -Xmx4g -XX:NewSize= -XX:MaxNewSize= "
说明:
-server:服务器模式
-Xms:堆内存初始化大小
-Xmx:堆内存空间上限
-XX:NewSize=:新生代空间初始化大小
-XX:MaxNewSize=:新生代空间最大值
生产案例:
一台tomcat服务器并发连接数不高,可能2000就扛不住,生产建议分配物理内存通常4G到8G较多,如果需要更多连接,一般会利用虚拟化技术实现多台tomcat
vim catalina.sh
JAVA_OPTS="-server -Xms4g -Xmx4g -Xss512k -Xmn1g -XX:CMSInitiatingOccupancyFraction=65 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:PermSize=128m -XX:MaxPermSize=512m -XX:CMSFullGCsBeforeCompaction=5 -XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods"
tomcat线程池(并发)调整:
常用属性:
connectionTimeout 连接超时时长,单位ms
maxThreads 最大线程数,默认200
minSpareThreads 最小空闲线程数
maxSpareThreads 最大空闲线程数
acceptCount 当启动线程满了之后,等待队列的最大长度,默认100
URIEncoding URI地址编码格式,建议使用 UTF-8
enableLookups 是否启用客户端主机名的DNS反向解析,缺省禁用,建议禁用,就使用客户端IP就行
compression 是否启用传输压缩机制,建议"on",CPU和流量的平衡
compressionMinSize 启用压缩传输的数据流最小值,单位是字节
compressableMimeType 定义启用压缩功能的MIME类型text/html, text/xml, text/css,text/javascript
修改连接器的参数
vim server.xml
<service>
...
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
</service>

浙公网安备 33010602011771号