UbuntuにてOpenLDAPを使っていた時のこと。
ファイルディスクリプタの上限値を増やそうとして、再起動するとOpenLDAPのプロセスの上限値が反映されなかったのでその対処法のメモ。
続きは以下より。
LDAPの負荷テストをして、1000セッションあたりからなんだか調子がおかしくなってきた。
lsofとかでldapのファイルディスクリプタ数みると1000ちょい付近で上がらなくなるのでおそらくそこが原因かなと考えた。
自分のldapのログでは確認されなかったけど、多分too many open filesとか普通は出てるんじゃないかなぁと。
(別件だけどOracleのASMが、これが原因で落ちたりしてたなぁ…)
そこでファイルディスクリプタの上限値を増やそうと思い、/etc/security/limits.confの値に以下のように記載した。
openldap soft nofile 65536 openldap hard nofile 65536
また、/etc/sysctl.confにも以下の値を記入。
fs.file-max = 6815744 fs.aio-max-nr = 1048576
この状態でslapdを再起動してみるとちゃんと反映されているようにみえる。
grep "Max open files" /proc/`pidof slapd`/limits Max open files 65536 65536 files
しかし、OSごとrebootし、起動した直後に再度確認してみると。。。
grep "Max open files" /proc/`pidof slapd`/limits Max open files 1024 4096 files
反映されてNEEEEEEEEEEEEEEEEEEEET!!
ということで、設定値については一時的なもので、OSを再起動するとlimits.confなどの値を無視して初期値に戻されてしまうことがわかった。
巷には様々な対策法があるので色々と試してみた。
http://yumewaza.yumemi.co.jp/2010/07/limitsconf.html - yumewaza.yumemi.co.jp |
手動で再起動した場合は一時的にlimits.confの設定内容が有効になるだけなのです。
当然、マシン自体が再起動した場合はinitが各daemonを起動し、PAM認証が入らないため、OS規定の上限値である1024に戻ってしまいます。
どうりでOS再起動すると元に戻っちゃうわけです。
てことでここにある方法で同じようにslapdに仕込んでみる
echo “ulimit -n” >> /etc/init.d/slapd
で、OS再起動してみたが
結果:惨敗
OpenLDAP のログに too many open files が出る時の対策です。原因は、同時にオープンできるファイル数の上限に達したためです。対策は /etc/sysconfig/ldap ファイルの SLAPD_ULIMIT_SETTINGS パラメータに設定するとOKです。(当方の環境は CentOS 6.3 64bit、OpenLDAP 2.4 です)変更前はコメントアウトされてました。 #SLAPD_ULIMIT_SETTINGS="" 変更後。 SLAPD_ULIMIT_SETTINGS="-n 8192" 当方の環境ではファイルディスクリプタのデフォルトは 1024 でした… OpenLDAP で Too many open files が出る時の対策 - Nanの備忘録 - Nanの備忘録 |
ちなみに OpenLDAP 2.3 系の場合は次のように書くようです。パラメーター名が若干違います。
ULIMIT_SETTINGS="-n 8192"
Ubuntuには/etc/sysconfig/ldapなるものがないので、/etc/defaults/slapdがそれっぽいのでそこにいれてみる。
そして再起動!!
結果:だめ!!!!!!
Re: too many open files - www.openldap.org |
I should set ulimit in the /etc/default/slapd and it will work.
というのでulimitの設定をいれてみる
echo “ulimit -n 65536” >> /etc/default/slapd
そして再起動してみると。。。
キタ━━━━(゚∀゚)━━━━!!
grep "Max open files" /proc/`pidof slapd`/limits Max open files 65536 65536 files
無事設定されましたー!
結果として/etc/default/slapdにulimitを入れればOSが再起動してもファイルディスクリプタが反映されるようです。
こんにちは。virapture…
View Comments
Your article helped me a lot, is there any more related content? Thanks!
Thank you very much for sharing, I learned a lot from your article. Very cool. Thanks. nimabi
Your point of view caught my eye and was very interesting. Thanks. I have a question for you.