不同服务器的配置以及服务器部署的服务数量,需要对tomcat、jvm的参数进行调整,以下只是建议调整,非必须也非所有,只是提出几种常用的参数调整
以下4个参数调整非常重要,一定要记得调整
参数 | 名称 | 建议值 |
---|---|---|
accept-count | 最大等待数 | 1000 |
max-connections | 最大连接数 | 10000 |
max-threads | 最大线程数 | 服务器1核2g,设为200;4核8g内存,线程数值800 |
min-spare-threads | 最小线程数 | 100 |
注:最大连接数=max-connections + accept-count
最大并发数=max-threads
过大的max-threads 和 max-connections会导致tomcat队列阻塞, 大量waiting连接,最终超时. 具体数字取决于链路响应速度.
max-threads: 处理线程数量, 越多的线程数上下文切换开销越大, 越小的线程数, CPU跑不满
max-connections: 连接线程数量, 连接越多, 每个线程等待cpu片段周期越长.
accept-count: 排队等待连接数. max-connections有空闲线程, 将部分accept-count放到max-connections进行业务处理(有时快速失败可能比等待更适合业务)
server:
tomcat:
accept-count: 1000
max-connections: 10000
max-threads: 800
min-spare-threads: 100
以下4个参数调整非常重要,一定要记得调整
参数 | 说明 | 实例 |
---|---|---|
-Xms | 初始堆大小,默认物理内存的1/64 | -Xms2G |
-Xmx | 最大堆大小,默认物理内存的1/4 | -Xms2G |
-XX:MetaspaceSize | 元空间初始大小 | -XX:MetaspaceSize=256m |
-XX:MaxMetaspaceSize | 元空间最大大小 | -XX:MaxMetaspaceSize=256m |
java -jar -XX:MetaspaceSize=256m-XX:MaxMetaspaceSize=256m-Xms2048m -Xmx2048m springboot_demo.jar
JDK8及以上推荐使用G1GC
java \
-server\
-XX:+PrintGCDateStamps \
-XX:+PrintGCDetails \
-XX:+UseG1GC \
-XX:InitiatingHeapOccupancyPercent=25 \
-XX:MaxGCPauseMillis=200 \
-XX:G1HeapRegionSize=4m \
-XX:ParallelGCThreads=12 \
-XX:ConcGCThreads=4 \
${JAVA_DEBUG_OPT} ${SERVER_CLASS} 1>${LOG_PATH}/server_stdout_log.$(date +%s) 2>&1 &