ファイルディスクリプタの上限値を増やす
システム全体のファイルディスクリプタの上限値を変更する
ファイルディスクリプタの上限値を増やす設定を、Ubuntuを例として作業を進めていくが、CentOSなどにも適用可能。
とりあえず、現在のファイルディスクリプタの使用状況を確認してみる。
$ cat /proc/sys/fs/file-nr 4256 0 98531
左から、割り当て済みファイルディスクリプタ 、使用中ファイルディスクリプタ 、最大割り当て可能ファイルディスクリプタとなる。
この最大割り当て可能ファイルディスクリプタの値を増やしてみる。/etc/sysctl.conf を開いて、最下行に以下のように追記する。
$ sudo vi /etc/sysctl.conf # ファイルディスクリプタの上限値 fs.file-max = 794573
ここでは最大割り当て可能値を794573とした。この設定を反映させる為に以下のコマンドを実行する。
$ sudo sysctl -p
再び以下のコマンドでファイルディスクリプタの使用状況を確認してみる。先ほどよりも値が増えていることが確認できる。
$ cat /proc/sys/fs/file-nr 4256 0 794573
各ユーザのファイルディスクリプタの上限値を変更する
現在、chibiユーザでログインしているとして、ファイルディスクリプタの上限値の確認をしてみる。
$ ulimit -n 1024
デフォルトでは1024となっている。この値を増やすには、/etc/security/limits.conf を編集する。
ここでは例として、rootとchibi の値を増やす記述を行う。最終行の「# End of file」の上辺りにでも以下のように追記する。
$ sudo vi /etc/security/limits.conf # ファイルディスクリプタの softリミット、hardリミット共に 44769 にする chibi soft nofile 44769 chibi hard nofile 44769 root soft nofile 44769 root hard nofile 44769 # End of file
以上の編集が完了したら、再ログインして確認してみる。
$ ulimit -n 44769