Nginx代理,不能持续并发

1、背景:为了提高性能,我在Tomcat前面加了一层Nginx做动静分离;
2、环境:同一台云服务器,8核32G,部署1个Nginx和一个Tomcat,Nginx代理Tomcat;
3、现象1:压测Tomcat端口,可以一直持续并发1000,不报错
4、现象2:压测Nginx端口,并发200、400或1000,刚开始不会报错,但总请求量到了5万多,就开始报错(如图报错率11.55%)
报错:connect() failed (110: Connection timed out) while connecting to upstream, client: 192.168.31.251, server(192.168.31.251是压测服务器)
5、现象3:不管是并发200、400、1000,CPU始终是80%多并未变化
6、现象4:***
报错的时候,服务器从80%多降了下来,然后再升到80%多

7、目标:只要用Nginx代理,并发能达到800,不报错就行了

压测错误率:
img

Nginx错误日志:
img

为了分析问题,我简化Nginx配置,依然是到了5万报错,配置如下:

#user  nobody;
worker_processes  8;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    #0秒、1秒、60秒都一样的效果
    keepalive_timeout  0;

    upstream epgs {
        server localhost:28081;
    }
    
    server {
        listen       28080;
        server_name  localhost;

        location ~ :28080/epgs/ {
            proxy_pass http://epgs;
        }
    }
}

worker_connections 1024; 这个配置设置大点,默认是1024,按照你说的现象,你把这个设置到更大点,比如65535(进程最大可打开文件数:进程最大可打开文件数受限于操作系统,可通过 ulimit -n 命令查询,以前是1024,现在是65535,)

你这是单台机器啊,你得考虑到NGINX和Tomcat每个的资源消耗啊,如果能耗都是一样的那你得并发也就智能是单个Tomcat的50%啊,何况可能的资源消耗还不一样呢