使用 nginx 的负载平衡比单节点的 RPS 更低
Load balancing with nginx lower RPS than single node
我为 4 个区块链客户端设置了一个 nginx 负载均衡器,并且通过负载均衡器使用 k6 进行负载测试时每秒获得的请求数比我针对单个节点时所做的要少。所有节点都对等量的流量做出响应,其中 none 个节点的响应速度似乎比下一个慢。
负载平衡器是使用 bitnami nginx helm chart 设置的,区块链客户端 运行 在它们自己的 VM 上。
**nginx.conf**
# Based on https://www.nginx.com/resources/wiki/start/topics/examples/full/#nginx-conf
# user www www; ## Default: nobody;
load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;
worker_processes auto;
error_log "/opt/bitnami/nginx/logs/error.log";
pid "/opt/bitnami/nginx/tmp/nginx.pid";
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log "/opt/bitnami/nginx/logs/access.log";
add_header X-Frame-Options SAMEORIGIN;
client_body_temp_path "/opt/bitnami/nginx/tmp/client_body" 1 2;
proxy_temp_path "/opt/bitnami/nginx/tmp/proxy" 1 2;
fastcgi_temp_path "/opt/bitnami/nginx/tmp/fastcgi" 1 2;
scgi_temp_path "/opt/bitnami/nginx/tmp/scgi" 1 2;
uwsgi_temp_path "/opt/bitnami/nginx/tmp/uwsgi" 1 2;
sendfile on;
tcp_nopush on;
tcp_nodelay off;
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/css application/javascript text/xml application/xml+rss;
keepalive_timeout 65;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 80M;
server_tokens off;
include "/opt/bitnami/nginx/conf/server_blocks/*.conf";
}
**serverBlock**
upstream backend {
server 1.2.3.4:8000;
server 2.2.3.4:8000;
server 3.2.3.4:8000;
server 4.2.3.4:8000;
}
server {
listen 0.0.0.0:8080;
location / {
proxy_pass http://backend;
}
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
从 nginx 指标或检查容器的资源使用情况来看,没有什么突出的。
有没有人对调试此问题的下一步或罪魁祸首有什么建议?
感谢您的帮助。
最终根本不是 nginx,因为我错误地认为它是瓶颈。设置一个 hello world 的小例子,在负载测试之后,它指出了我 API 网关中的真正瓶颈。
我为 4 个区块链客户端设置了一个 nginx 负载均衡器,并且通过负载均衡器使用 k6 进行负载测试时每秒获得的请求数比我针对单个节点时所做的要少。所有节点都对等量的流量做出响应,其中 none 个节点的响应速度似乎比下一个慢。
负载平衡器是使用 bitnami nginx helm chart 设置的,区块链客户端 运行 在它们自己的 VM 上。
**nginx.conf**
# Based on https://www.nginx.com/resources/wiki/start/topics/examples/full/#nginx-conf
# user www www; ## Default: nobody;
load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;
worker_processes auto;
error_log "/opt/bitnami/nginx/logs/error.log";
pid "/opt/bitnami/nginx/tmp/nginx.pid";
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log "/opt/bitnami/nginx/logs/access.log";
add_header X-Frame-Options SAMEORIGIN;
client_body_temp_path "/opt/bitnami/nginx/tmp/client_body" 1 2;
proxy_temp_path "/opt/bitnami/nginx/tmp/proxy" 1 2;
fastcgi_temp_path "/opt/bitnami/nginx/tmp/fastcgi" 1 2;
scgi_temp_path "/opt/bitnami/nginx/tmp/scgi" 1 2;
uwsgi_temp_path "/opt/bitnami/nginx/tmp/uwsgi" 1 2;
sendfile on;
tcp_nopush on;
tcp_nodelay off;
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/css application/javascript text/xml application/xml+rss;
keepalive_timeout 65;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 80M;
server_tokens off;
include "/opt/bitnami/nginx/conf/server_blocks/*.conf";
}
**serverBlock**
upstream backend {
server 1.2.3.4:8000;
server 2.2.3.4:8000;
server 3.2.3.4:8000;
server 4.2.3.4:8000;
}
server {
listen 0.0.0.0:8080;
location / {
proxy_pass http://backend;
}
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
从 nginx 指标或检查容器的资源使用情况来看,没有什么突出的。
有没有人对调试此问题的下一步或罪魁祸首有什么建议?
感谢您的帮助。
最终根本不是 nginx,因为我错误地认为它是瓶颈。设置一个 hello world 的小例子,在负载测试之后,它指出了我 API 网关中的真正瓶颈。