2016年1月26日火曜日

daemon系プロセスでのファイルディスクリプタを一律で設定する

fluentdを入れる際にファイルディスクリプタの値を増やしたほうがいいと書いてあったので、
/etc/security/limits.confに書いたのですが、daemonとして立ち上げたときに
設定が効いてなかったので調べました。

検証環境
Amazon Linux AMI 2015.09

まずは現在のファイルディスクリプタの値とdaemonでの状態を確認
$ ulimit -n
1024

$ sudo service httpd start
Starting httpd:                                            [  OK  ]

$ chkconfig --list httpd
httpd           0:off 1:off 2:on  3:on  4:on  5:on  6:off

$ cat /proc/`pgrep httpd | head -1`/limits | grep 'open files'
Max open files            1024                 4096                 files

ulimitでファイルディスクリプタを設定して、手動で起動するとその設定値になります。
$ ulimit -n 4048
$ ulimit -n
4048

$ cat /proc/`pgrep httpd | head -1`/limits | grep 'open files'
Max open files            4048                 4048                 files

rebootすると戻ります。
$ cat /proc/`pgrep httpd | head -1`/limits | grep 'open files'
Max open files            1024                 4096                 files

調べたところ、/etc/sysconfig/initがdaemonでのプロセス起動時に実行されるようなので、
ここでulimitを実行するように追記しました。
$ sudo vim /etc/sysconfig/init 
$ tail -1 /etc/sysconfig/init 
ulimit -n 4048

rebootしても元に戻らないようになりました。
$ cat /proc/`pgrep httpd | head -1`/limits | grep 'open files'
Max open files            4048                 4048                 files


参考URL
http://staffblog.yumemi.jp/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%82%BF%E6%95%B0%E3%81%AE%E4%B8%8A%E9%99%90%E5%A4%89%E6%9B%B4%E3%81%A8limits-conf%E3%81%AE%E7%BD%A0-2/
http://d.hatena.ne.jp/akishin999/20130213/1360711554

0 件のコメント:

コメントを投稿