サーバーは正常に実行されています-または少なくともそうです-しかし、常に次のエラーが発生します:
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)。
これは役立つかもしれません:- http://ubuntuforums.org/showthread.php?p=11950245#post11950245
Sudo service Apache2 restart # no errors
service Apache2 restart # errors
問題は/ 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
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