手册

EIP7性能优化参数配置

421
刘溢华
2021-08-03 16:22:00
分享链接

数据库最大连接数查看和配置

mysql为例

检查数据库的最大连接池数量,确保有足够的连接数



 假设部署5个应用,每个应用最大的连接数是400,那么数据库的最大连接数必须大于2000,每个应用最大的并发理论可以达到400

应用的最大连接池配置

2.1文件路径base /src/main/resources/config/application.yml




该参数会限制着数据库连接对象的个数,测试高并发时同样需要考虑合理设置该值

内置tomcat优化


主要有三个参数可以优化



3.1  maxThreads


每一次HTTP请求到达Web服务,tomcat都会创建一个线程来处理该请求,那么最大线程数决定了Web服务容器可以同时处理多少个请求。maxThreads默认200,肯定建议增加。但是,增加线程是有成本的,更多的线程,不仅仅会带来更多的线程上下文切换成本,而且意味着带来更多的内存消耗。如:JVM中默认情况下在创建新线程时会分配大小为1M的线程栈,所以,更多的线程异味着需要更多的内存。线程数的经验值为:12g内存为200,线程数经验值20048g内存,线程数经验值800


3.2  max C onnections


        最大链接数,默认使用的是Java新的NIO模式,默认值为10000,对于windowsAPR/native IO模式,maxConnections默认值为8192,这是出于性能原因,如果配置的值不是1024的倍数,maxConnections 的实际值将减少到1024的最大倍数。如果设置为-1,则禁用maxconnections功能,表示不限制tomcat容器的连接数。maxConnectionsaccept-count的关系为:当连接数达到最大值maxConnections后,系统会继续接收连接,但不会超过acceptCount的值。


3.3  accept C ount

最大等待队列数



内置un dertow 优化,系统默认没有使用under tow


如果需要使用,优化参数如下,可以在base/src/main/resources/config/application.yml文件中新增配置

配置说明

# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程

# 不要设置过大,如果过大,启动项目会报错:打开文件数过多

#server.undertow.io-threads=32

# 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程

# 它的值设置取决于系统线程执行任务的阻塞系数,默认值是IO线程数*8

#server.undertow.worker-threads=2000

# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理

# 每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可

server.undertow.buffer-size=1024

# 每个区分配的buffer数量 , 所以pool的大小是buffer-size * buffers-per-region

server.undertow.buffers-per-region=1024

# 是否分配的直接内存(NIO直接分配的堆外内存)

server.undertow.direct-buffers=true

启动流程,审批异步线程池配置

为了优化系统启动流程和审批接口的性能,系统增加了异步处理机制配置如下



5.1  core-pool-size

异步线程池初始化最小连接数

5.2  max -pool-size

异步线程池最大线程数, 200并发,可以设置最大线程数据为200


发表评论
评论通过审核后显示。