1

内部システム

ハードウェア: 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-serverapi- 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;
    }
}
4

1 に答える 1