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,不报错就行了
压测错误率:
Nginx错误日志:
为了分析问题,我简化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;
}
}
}