web-dev-qa-db-ja.com

worker_connectionsでは不十分です

kibanaにデプロイされたnginxアプリケーションにアクセスしようとしていますが、以下にアクセスしています

URL:-http://127.0.0.1/kibana-3.1.2

2015/02/01 23:05:05 [alert] 3919#0: *766 768 worker_connections are not enough while connecting to upstream, client: 127.0.0.1, server: , request: "GET /kibana-3.1.2 HTTP/1.0", upstream: "http://127.0.0.1:80/kibana-3.1.2", Host: "127.0.0.1"

Kibanaは/var/www/kibana-3.1.2に展開されています

私はworker_connectionsを増やしようとしましたが、まだ運がありません。この場合は以下になります。

2015/02/01 23:02:27 [alert] 3802#0: accept4() failed (24: Too many open files)
2015/02/01 23:02:27 [alert] 3802#0: accept4() failed (24: Too many open files)
2015/02/01 23:02:27 [alert] 3802#0: accept4() failed (24: Too many open files)
2015/02/01 23:02:27 [alert] 3802#0: accept4() failed (24: Too many open files)
2015/02/01 23:02:27 [alert] 3802#0: accept4() failed (24: Too many open files)

nginx.conf:-

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

そして、以下の場所ディレクティブ。

location /kibana-3.1.2{

        proxy_set_header X-Real-IP  $remote_addr;

        proxy_set_header X-Forwarded-For $remote_addr;

        proxy_set_header Host $Host;

        proxy_pass http://127.0.0.1;

        add_header Access-Control-Allow-Origin *;

        add_header Access-Control-Allow-Headers *;
       }
25
RE350

明確に言うのに十分な情報ではありませんが、提供した構成に基づいて、ループがあるように見えます。リクエストをlocalhost:80にプロキシしていますが、NGINXはおそらくポート80でリッスンしています。そのため、NGINXは何度も自分自身に接続しているため、開いているファイルが多すぎるというエラーが発生します。

また、Kibanaにはサーバー側のコードがないため、ここではproxy_passは適切ではありません。次のようなもので十分です。

root /var/www/
location /kibana-3.1.2 {
    try_files $uri $uri/ =404;
}

そうは言っても、これをパブリックインターネットからアクセスできるようにする場合は、パスワードで保護し、elasticsearchの前でproxy_passを使用して、要求を制御する必要があります。しかし、それは別の話です:)

26
chrskly

古い質問ですが、私は同じ問題を抱えており、受け入れられた答えは私にはうまくいきませんでした。

ここ のように、 worker_connections の数を増やす必要がありました。

/ etc/nginx/nginx.conf

events {
    worker_connections 20000;
}
47
RASG