Elgin Search Cluster(バージョン1.3.7)の前で、Load Balancerとしてnginxを設定しようとしています。elasticsearch loadbalancerとしてのnginxのパフォーマンスが低い
私は3つのベンチマークサーバーからクラスタ内の3つのelasticsearchノードまでテストしています。 nginxをLoadBalancerとして使用するとパフォーマンスが約50%低下します。
nginxなしで300秒で28Kリクエストを処理できますが、それには300秒で13kしかありません。 サーバーはVMであるため、少なくともネットワークの問題ではありません。 NginxサーバーのCPU負荷が高くないか、リソースの制限がありません。
コンフィグは非常に単純です:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
worker_rlimit_nofile 4096;
events {
worker_connections 1024;
}
とESのための特定:
server {
listen 9100;
server_name elasticsearch.site.com;
location/{
proxy_pass http://elasticsearch;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Proxy-Connection "Keep-Alive";
}
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log error;
}
upstream elasticsearch {
server elasticsearch1:9200;
server elasticsearch2:9200;
server elasticsearch3:9200;
keepalive 15;
}
私はnginxの毎秒より多くの要求を配信することはできません理由を理解するためにどのような方法があるかどうか知りたい、またはこのケースをデバッグする方法があれば。 タイムアウトを理解するか、接続を維持するか、nginxによって処理される他のリソースがあれば大丈夫です。
おそらくhaproxyを試してみませんか?とにかく何らかの負荷分散が必要な場合 – Sobrique
バッファリングがアプリケーションの遭遇の遅さの理由である場合、私は驚くことはありません。チューニングを考慮する2つの構成オプション:[proxy_buffering](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering)および[proxy_request_buffering](http://nginx.org/en/docs/http/ ngx_http_proxy_module.html#proxy_request_buffering)。 – Anatoly