# 高并发性能优化设置&&tomcat设置

#### tomcat设置

```yaml


server:
  tomcat:
    max-connections: 10000 # 最大连接数，默认值为8192，一般情况下可以不用修改
    threads:
      max: 1000 # 处理请求最大线程数，默认值是200，既tomcat的默认并发是200
      min-spare: 100 # 处理请求的最小空闲线程，即使没有请求需要处理，也保留，以便于快速响应连接请求
    accept-count: 100 # 额外的阻塞的处理请求数，当所有线程都在使用，还可以额外接受的请求，并放入请求队列，待有可用线程后立刻处理，一般不超过最大线程数的10%

```

- max-connections: 10000：这个参数设置了Tomcat服务器允许的最大连接数。这意味着Tomcat在同一时间最多可以处理10000个客户端连接。这个值应该根据服务器的硬件资源（如CPU、内存）和网络带宽来调整，以确保服务器能够高效稳定地运行。

- threads: 用于处理请求的线程池的参数。
  - max: 1000：线程池中的最大线程数。意味着Tomcat可以同时启动最多1000个线程来处理客户端请求。线程数数量需要考虑服务器的硬件资源。
  - min-spare: 100：线程池中保持空闲的最小线程数。即使当前没有那么多请求需要处理，Tomcat也会保持至少100个线程处于空闲状态，以便快速响应突然增加的请求量。
 
accept-count: 100：当所有可用的处理线程都在使用时，Tomcat能够接受的额外请求的数量，并将这些请求放入队列中等待处理。意味着如果所有的处理线程都在忙，Tomcat还可以接受额外的100个请求，但这些请求需要等待直到有线程变得可用。


**连接数与线程数**，根据TCP原理，是先建立连接，再处理请求，如果在连接超时后还没有处理请求，则断开连接，例如常见的**timeout,socket closed**


#### nginx设置

主要是开启gzip压缩，减少流量

```conf
    # 开启gzip压缩
    gzip on;
    # 压缩哪些文件类型
    gzip_types text/plain  text/css application/json text/javascript application/javascript;
    # 最小压缩大小，小于这个大小不压缩，单位是字节
    gzip_min_length 1000;
    # 压缩率，1-9，数字越大压缩的越好，但是也越消耗CPU
    gzip_comp_level 6;
    # 是否在http header中添加Vary: Accept-Encoding，建议开启
    gzip_vary on;
    # 禁止IE6使用gzip，因为这些浏览器不支持gzip压缩
    gzip_disable "MSIE [1-6]\.";
    # 在特定条件下对代理服务器的响应进行压缩
    gzip_proxied expired no-cache no-store private auth;
    # 缓冲区数量和大小，设置了16个8KB的缓冲区
    gzip_buffers 16 8k;
    # 最小http版本，低于这个版本不压缩
    gzip_http_version 1.1;

```

#### Springboot程序内优化

- 按需返回，返回过多的数据占用内存和带宽
- 嵌套的对象和数组，反序列化的时候嵌套对象占用开销
- 独立的中间件主机：主机资源端口有限，如果全部在一台主机，会占用主机端口和文件描述

#### jmeter自身优化

-  从jmeter.bat打开软件，而不是直接打开jar
-  修改jmeter.bat增加应用程序堆栈

##### 修改HEAP大小，一般为主机内存的一半
```conf

if not defined HEAP (
    rem See the unix startup file for the rationale of the following parameters,
    rem including some tuning recommendations
    set HEAP=-Xms1g -Xmx8g -XX:MaxMetaspaceSize=512m
)

```

##### 从bat启动时为英文修改

[![](https://iovhm.com/book/uploads/images/gallery/2025-02/scaled-1680-/ZNH43j2skF4nurG6-image-1739000253379.png)](https://iovhm.com/book/uploads/images/gallery/2025-02/ZNH43j2skF4nurG6-image-1739000253379.png)

#### jvm优化

<https://iovhm.com/book/books/cee63/page/jvm>