slapdのCentOS7でのulimitの増やし方と経緯

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
```

http://end0tknr.hateblo.jp/entry/20151029/1446093890

・プロセスに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        
```

https://blogs.yahoo.co.jp/beachinside/8269443.html

設定はしているが効いていない模様

```
$ 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