ファイルディスクリプタの上限値を増やす

システム全体のファイルディスクリプタの上限値を変更する

ファイルディスクリプタの上限値を増やす設定を、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