web-dev-qa-db-ja.com

apache2ctl:87:ulimit:エラー設定制限(操作は許可されていません)

サーバーは正常に実行されています-または少なくともそうです-しかし、常に次のエラーが発生します:

Apache2/usr/sbin/Apache2ctl: 87: ulimit: error setting limit (Operation not permitted)

Debian Wheezy上のApache 2.2.22-9で発生します。

# Apache2ctl configtest

/ usr/sbin/Apache2ctl:87:ulimit:エラー設定制限(操作は許可されていません)
構文OK

# service Apache2 reload

[....] Webサーバー構成の再読み込み:Apache2/usr/sbin/Apache2ctl:87:ulimit:エラー設定制限(操作は許可されていません)
。 OK

# service Apache2 restart

[....] Webサーバーの再起動:Apache2/usr/sbin/Apache2ctl:87:ulimit:エラー設定制限(操作は許可されていません)
...待機中/ usr/sbin/Apache2ctl:87:ulimit:エラー設定制限(操作は許可されていません)
。 OK

# service Apache2 status

Apache2が実行されています(pid 32045)。

12

これは役立つかもしれません:- http://ubuntuforums.org/showthread.php?p=11950245#post11950245

Sudo service Apache2 restart # no errors
service Apache2 restart      # errors
16

問題は/ usr/sbin/Apache2ctl(Debian)に起因します。見てみな:

~$ grep ULIMIT /usr/sbin/Apache2ctl
ULIMIT_MAX_FILES="${Apache_ULIMIT_MAX_FILES:-ulimit -n 8192}"
if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then
    $ULIMIT_MAX_FILES

ここでは、許可されているオープンファイルの数を8192に設定しています。または、あなたの場合、試行して失敗します。

Apache2ctlでエラーが発生しないようにするには、次の2行を追加して、/ etc/security/limits.confファイルでシステムの設定を調整します。

*               soft    nofile          8192
*               hard    nofile          8192

他に何が影響するのかわからないので、必要以上に増やすことはしませんでした(8192)。しかし、これは警告を取り除きます。

その後、システムを再起動する必要があるかどうかはわかりません。ulimitには動的な要素があり、私には馴染みがないためです。ただし、現在のulimitのファイル数が何であるかを確認するのに十分簡単に​​テストできます。

ulimit -n

あなたは私がそれを見つけた場所を読みたいかもしれません: stackoverflow-setting ulimit

6
Adam

1.ホストマシンのulimitの値を確認して変更します。ファイル/ etc/profileに値を追加して、有効にします。

ulimit -u 10240
ulimit -n 8192     #This configuration is what we most needed
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited

source /etc/profile

または、次のことができます。

Sudo sh -c 'printf "\nulimit -HSn 999999\n" >> /etc/sysconfig/docker'

2. docker serviceを再起動し、設定を有効にします。

Sudo service docker restart

3.コンテナでulimitをテストします。

ulimit -n

これは私のテスト結果です!

ヒント:多分次のようにコマンドを試すこともできます(前提条件:ホストマシンのulimitは8192より大きい必要があります)、私は失敗しました

docker run --privileged -it -p xxxx:80 --ulimit data=8192 linode/lamp /bin/bash
2
user3772170