nginx uLimit 'worker_connectionsは開いているファイルのリソース制限を超えています:1024'


14

私はこのエラーを受け取り続けnginx/error.log、それが私を狂わせます:

8096 worker_connections exceed open file resource limit: 1024

私は考えることができるすべてを試してみましたが、ここでnginxを制限しているものを理解することはできません。何が欠けているのか教えてもらえますか?

nginx.conf これがあります:

worker_processes 4;
events {
        worker_connections 8096;
        multi_accept on;
        use epoll;
}

システムのUlimitを次のsecurity/limits.confように変更しました。

# This is added for Open File Limit Increase
*               hard    nofile          199680
*               soft    nofile          65535

root            hard    nofile          65536
root            soft    nofile          32768

# This is added for Nginx User
nginx           hard    nofile          199680
nginx           soft    nofile          65535

まだエラーが表示されていました。だから私も編集/etc/default/nginxしてみて、この行を追加しました:

ULIMIT="-n 65535"

引き続き同じエラーが表示されます。nginxワーカーの接続が1024のみに制限されていることがわかりません。指摘してください。

Debian 7 + nginxを入手しました

回答:


29

worker_rlimit_nofile 65535;メインコンテキスト内のnginx.confで設定します。


1
それでおしまい!それはそれを修正しました。ああ、あなたは救い主です。ULimitが手動で設定されていない場合でも機能し/etc/default/nginx fileます。驚くばかり。ありがとう@Xaviour
ニール

1
よくやったザビエル。
デイブオランダ14年

@Xavierはこれによりエラーメッセージを削除しましたが、以下の回答に記載されているようにulimitを変更せずにこれが機能する理由を説明できますか?Google検索では、limits.confまたはsystcl.confのulimitを変更するよう指示されますが、私には何も機能しません。
Bsienn

2

ユーザーになる:

su - nginx

制限を確認します。

ulimit -Hn
ulimit -Sn

ファイルシステムで開くことができるファイルの数を編集します。

vi /etc/sysctl.conf
fs.file-max = 70000

変更をロードします。

sysctl -p

それが役立つかどうかを確認してください。


initを使用しており、systemctlをインストールしていません。それは違いを生むでしょうか?
ニール14年

Nginxユーザーに変更すると、ulimit -Hnが正しく表示されます。私はその後、確認init.d/nginxし、それをチェックしULIMITは、(それが既に設定されている)は、デフォルトのフォルダに設定し、その値というセットになっている場合、それはdoesntの:Check if the ULIMIT is set in /etc/default/nginx
ニール

file-maxを変更した後sysctl -p、ubuntu 18.04.2を実行するとすぐにハングし、開いているファイルが多すぎて起動せず、OSを再起動するためにセキュアブートのコードを削除する必要がありました。
Bsienn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.