limits.confに更新した後でも、redisが1024ファイルの制限を報告するのはなぜですか?


9

redis.logファイルの上部にこのエラーが表示されます。

現在の最大オープンファイル数は1024です。uclientの下限を補うために、maxclientsは4064に削減されました。

私は手紙にこれらの手順に従いました(そして再起動しました):

さらに、実行するとこれが表示されますulimit

ubuntu@ip-XX-XXX-XXX-XXX:~$ ulimit -n
65535

このエラーは疑わしいですか?そうでない場合、他にどのような手順を実行する必要がありますか?Ubuntu LTS 14.04.1(ここでもツリーの先端)でredis 2.8.13(ツリーの先端)を実行しています。

ユーザー情報は次のとおりです。

ubuntu@ip-XX-XXX-XXX-XXX:~$ ps aux | grep redis
root      1027  0.0  0.0  66328  2112 ?        Ss   20:30   0:00 sudo -u ubuntu /usr/local/bin/redis-server /etc/redis/redis.conf
ubuntu    1107 19.2 48.8 7629152 7531552 ?     Sl   20:30   2:21 /usr/local/bin/redis-server *:6379               

したがって、サーバーはubuntuとして実行されています。

コメントなしの私のlimits.confファイルを以下に示します。

ubuntu@ip-XX-XXX-XXX-XXX:~$ cat /etc/security/limits.conf | sed '/^#/d;/^$/d'
ubuntu soft nofile 65535
ubuntu hard nofile 65535
root soft nofile 65535
root hard nofile 65535

そして、sysctl fs.file-maxの出力は次のとおりです。

ubuntu@ip-XX-XXX-XXX-XXX:~$ sysctl -a| grep fs.file-max
sysctl: permission denied on key 'fs.protected_hardlinks'
sysctl: permission denied on key 'fs.protected_symlinks'
fs.file-max = 1528687
sysctl: permission denied on key 'kernel.cad_pid'
sysctl: permission denied on key 'kernel.usermodehelper.bset'
sysctl: permission denied on key 'kernel.usermodehelper.inheritable'
sysctl: permission denied on key 'net.ipv4.tcp_fastopen_key'

sudoとして

ubuntu@ip-10-102-154-226:~$ sudo sysctl -a| grep fs.file-max
fs.file-max = 1528687

また、redis.logファイルの上部にこのエラーが表示されます。関連しているかどうかはわかりません。ubuntuユーザーが最大オープンファイルを変更することは許可されていないことは理にかなっていますが、私が設定しようとしたulimitが高ければ、彼は次のことを行う必要はありません。

[1050] 23 Aug 21:00:43.572 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
[1050] 23 Aug 21:00:43.572 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.

回答:


4

/etc/pam.d/ディレクトリ内のファイルを編集する必要があります。

あなたが実行してあなたのケースではsudo -u ubuntu /usr/local/bin/redis-server、あなたがに次の行を追加しなければならない/etc/pam.d/sudoかに/etc/pam.d/common-session-noninteractive場合には、/etc/pam.d/sudoこのいずれかが含まれています。

session required pam_limits.so

これは、で提供される構成の設定に役立ちます/etc/security/limits.conf


それでおしまい!本当にありがとう。Ubuntu 2012.04 LTSからUbuntu 2014.04 LTSへの変更のように聞こえます。
esilver 2014

あなたを助けてくれてうれしいです。実際、私のxubuntu 14.04では、/ etc / pam.d / sudo内にこの行がありません。現在、12.04を確認できません。
Navern 2014

Debianの上にsystemd使用するときは、参照serverfault.com/questions/770037/...
tholu

3

問題がpam_limits.soに関連していないこの投稿を見つけたユーザーに対する別の提案。私の場合、Redisは監督者経由で起動されていました。この場合、スーパーバイザがユーザーコンテキストを切り替えた方法により、ユーザーに対して構成したものではなく、システムのデフォルトの制限で新しいセッションが実行されました。

その場合の解決策はここにあります。不足しているのは、監視対象の起動コマンドの一部としてulimit -nを介して制限を定義する必要があることです。

例:

[program:redis-a]
command=bash -c "ulimit -n 32768; exec /usr/local/bin/redis-server /etc/redis/a.conf"

1

開いているファイルの制限を増やすだけでなく。redis.confでmaxclientsを増やす必要があります。デフォルトではわずか10000です。

# Once the limit is reached Redis will close all the new connections sending
# an error 'max number of clients reached'.
maxclients 1024000

0

同様の問題を持つ他のUbuntuユーザーへの注意:

起動時にRedisを起動する場合、f.exはUpstartを使用して、「limit」スタンザでこの制限を設定できます。

したがって、nofileの場合:

limit nofile 4096 4096

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.