/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