nginx - nginx作为Elasticsearch负载均衡器性能低下

标签 nginx elasticsearch load-balancing

我试图在 flex 搜索集群(版本1.3.7)之前将nginx配置为负载均衡器。

我正在测试从3个基准服务器到群集中的3个Elasticsearch节点。
使用nginx作为LoadBalancer,我的性能下降了约50%。

没有nginx,我能够在300秒内处理28K个请求,但是有了它,在300秒内只能处理13k个请求。
服务器是VM,因此至少不应该是网络问题。
Nginx服务器没有高CPU负载或资源限制。

Config非常简单:

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无法每秒发送更多请求,或者是否有任何方法可以调试这种情况。
了解超时,保持 Activity 连接或nginx处理的任何其他资源都很好。

最佳答案

您不需要负载平衡器-ES已经提供了该功能。您只是添加了另一个组件,该组件可能行为不正常,并会添加不必要的网络跃点。去DNS轮循。

ES将分片您的数据(默认为5个分片),它将尝试在实例之间平均分配。根据您的环境调整分片和副本。

关于nginx - nginx作为Elasticsearch负载均衡器性能低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42650740/

相关文章:

ssl - Nginx if 关于 ssl 证书的声明

amazon-ec2 - ElasticSearch 消失/崩溃——找不到日志文件或任何其他信息

curl - HTTPS - 带有证书的 Amazon 负载均衡器

redirect - 我如何在 nginx 负载均衡器上将 https 重定向到 http

nginx - nginx 的代理缓存超时/延迟?

php - nginx 1.6 别名 + php5-fpm = Debian 8 上的 404

java - Elastic Search GET 未提供最新文档

elasticsearch - 启动多个节点不分配副本分片

java - 负载均衡器的信号问题

nginx 浏览器缓存指令带来 404 not found