内部システム
ハードウェア: 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 分間の遅延中に、load-server の nginx を再起動する ( systemctl restart nginx ) リクエストはエラーなしですぐに完了します。それはうまく処理されました。
不思議なことに、この問題は完全に 1 分遅れます(1 分 0.02 秒 ~ 1 分 0.1 秒かかります)。1分後には正常に見えますが(サーバー時間50ミリ秒で応答)、同じデバイスからのリクエストでは5分ごとに1分遅れます
しかし、外部 http 接続の完全なコピー x 5000 リクエストは、それを load-server から load-server に curl で送信します。
load-server send to perform-server および perform-server to 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;
}
}