内部系统
硬件:Xeon E-2236 x 32GB x 1TB SSD ),带 4 个服务器。仅用于负载平衡,用于执行x 2ea,用于db CRUD
软件:centos 7,nginx 1.18,节点 v12.22.1
当外部连接到服务器时,负载均衡服务器发送到反向代理(性能服务器)并计算它。计算完成后,发送到db-server进行记录。它
这项工作需要低性能,所以总是CPU 使用率是 0~2%,RAM 使用率是 3~7%,IO WAIT 是 0%
问题是
当外部请求到达负载服务器时,请求会随机延迟 完美 1 分钟,然后发送到反向代理服务器。并且当请求延迟 1 分钟时,重新启动负载服务器的 nginx ( systemctl restart nginx ) 立即完成请求而没有错误。它处理得很好。
神奇的是,这个问题完美延迟了 1 分钟(花费了 1min 0.02s ~ 1min 0.1s)。当 1 分钟后,它似乎正常(在 50 毫秒内响应几次)但是当来自同一设备的请求时,它每 5 分钟延迟 1 分钟
但是外部 http 连接 x 5000 个请求的完美副本通过 curl 将其从加载服务器发送到加载服务器,
load-server 发送到 perform-server 和 perform-server 到 db-server 花费低于平均 50ms 检查所有 nginx 到反向代理端口和响应,它也低于平均 50ms。
在nuxt-server和api-server中相同。它们从 perform-server 运行 - 每个 localhost:3000, localhost:3001 ~ 3012
加载-nginx.conf:
#user nobody;
worker_processes auto;
error_log logs/error.log;
events {
use epoll;
worker_connections 4096;
multi_accept off;
}
http {
client_max_body_size 300M;
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
#keepalive_timeout 0;
keepalive_timeout 35;
reset_timedout_connection on;
send_timeout 15;
upstream nuxtserver-ssl {
ip_hash;
server 10.10.10.21:500;
server 10.10.10.22:500;
}
upstream apiserver-ssl {
server 10.10.10.21:465;
server 10.10.10.22:465;
server 10.10.10.21:466;
server 10.10.10.22:466;
server 10.10.10.21:467;
server 10.10.10.22:467;
}
# HTTPS server
#
server {
include /usr/local/nginx/conf/ipdeny.conf;
listen 443 ssl;
server_name subdomain.example.com;
ssl_certificate /usr/local/nginx/ssl/__example_com.crt;
ssl_certificate_key /usr/local/nginx/ssl/__example_com.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
access_log /usr/local/nginx/logs/ssl-access.log combined;
error_log /usr/local/nginx/logs/ssl-error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://nuxtserver-ssl;
}
location /api/ {
proxy_set_header Upgrade $http_upgrade;
proxy_http_version 1.1;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
proxy_cache_bypass $http_upgrade;
proxy_pass http://apiserver-ssl;
proxy_connect_timeout 3;
proxy_buffering off;
}
}