问题描述
内部系统
硬件:至强 E-2236 x 32GB x 1TB SSD),带 4 个服务器。 仅用于负载平衡、性能 x 2ea、db CRUD
软件:centos 7,Nginx 1.18,node 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 花费低于 平均 50 毫秒 检查所有 Nginx 以反向代理端口和响应,它也低于 平均 50 毫秒。
在 nuxt-server 和 api-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;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)