slapdのCentOS7でのulimitの増やし方と経緯を備忘録しておきます。
slapdのレプリカセットをCentOS6から7に切り替えて並行運用しながらクライアント(CentOS6のnscd,nslcdとCentOS7のsssd混在でsssdはDNS切り替えると自動切り替わりするがnscdとnslcdはプロセス再起動が必要でした)を一気に切り替えたところ、
人と環境によってssh接続とsudoができたりできなかったりした。
→sssdにキャッシュされたらうまくいくけど一気にやりすぎてキャッシュに失敗してるホストが居たと予想された
こんなんが出てた
sudo: ldap_sasl_bind_s(): Can't contact LDAP server
ログでググると証明書まわりに関するverifyがどうのこうのという記事がでてたが本質的ではなかった
https://teratail.com/questions/15575
slapdのログのldap.logをみたところ、以下のようなopenfileのリミットがダメそうなのが大量に出ていた。
warning: cannot open /etc/hosts.allow: Too many open files
・プロセスにulimitが効いてるか確認する方法
$ ps -ef|grep slapd
isao_ko+ 14469 14351 0 08:54 pts/0 00:00:00 grep --color=auto slapd
ldap 20225 1 0 Apr12 ? 00:01:59 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// ldaps:///
$ cat /proc/20225/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 14229 14229 processes
Max open files 1024 ★ここ 4096 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 14229 14229 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
設定はしているが効いていない模様
$ grep -i ulimit /etc/sysconfig/ldap
# Parameters to ulimit, use to change system limits for slapd
SLAPD_ULIMIT_SETTINGS="-n 8192"
同僚の皆さんが検索した結果、CentOS7だとsysconfigに書いても効かない模様。
それと、
「/usr/lib/systemd/system/slapd.service を直してしまうと、おそらく update 時に上書きされる。
これは openldap-servers の config ファイル扱いになってない。」と書かれていた。
http://blogger.fastriver.net/2016/05/rhel7-slapd-slapdulimitsettings.html
キレ者のかたが「systemdの設定斜め読みしたけどその変数見てなさそうでちょっと試してみますー」
と以下のように設定置いた結果無事反映された。(ログに出てた大量のリミットエラーもなくなりました)
$ cat /etc/systemd/system/slapd.service.d/limits.conf
[Service]
LimitNOFILE=8192
※sudoで配置して所有者などはrootにするかんじでディレクトリ掘る必要あり。
反映するには以下2つうつ
sudo systemctl daemon-reload
sudo systemctl restart slapd
確認すると以下のとおり反映されていた
$ egrep -a 'Limit|open files' /proc/$(pgrep slapd)/limits
Limit Soft Limit Hard Limit Units
Max open files 8192 8192 files
systemdまわり、1年ちょと前に外道父さんの記事をブクマしていたのをすっかり忘れていた模様。。orz
http://blog.father.gedow.net/2016/03/28/limits-of-systemd/
参考
http://end0tknr.hateblo.jp/entry/20151029/1446093890
http://blogger.fastriver.net/2016/05/rhel7-slapd-slapdulimitsettings.html
http://blog.father.gedow.net/2016/03/28/limits-of-systemd/
https://blogs.yahoo.co.jp/beachinside/8269443.html
https://teratail.com/questions/15575
https://u7fa9.org/memo/HEAD/archives/2014-08/2014-08-20.rst