部署指南(参数调优)


不同服务器的配置以及服务器部署的服务数量,需要对tomcat、jvm的参数进行调整,以下只是建议调整,非必须也非所有,只是提出几种常用的参数调整

tomcat配置

  1. 查看项目bootstrap.yml配置的tomcat:accept-count、max-connections、max-threads、min-spare-threads参数值,如果没有配置则是默认的。
  2. 没有配置或者配置需要修改则提供两种方式修改
    • 第一种方式直接修改bootstrap.yml
    • 第二种方式bootstrap.yml外置,可放jar包目录同级,即可直接生效

配置参数如下

以下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

jvm配置

以下4个参数调整非常重要,一定要记得调整

参数 说明 实例
-Xms 初始堆大小,默认物理内存的1/64 -Xms2G
-Xmx 最大堆大小,默认物理内存的1/4 -Xms2G
-XX:MetaspaceSize 元空间初始大小 -XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize 元空间最大大小 -XX:MaxMetaspaceSize=256m

spring boot jar包启动样例

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  &