ファイルディスクリプタの最大数を増やす

出典::

ThinkIT - Linux+DB2のパフォーマンスチューニング 第5回:カーネルをチューニングする

テスト環境::

CentOS5 テスト用最小インストール手順を参照。

システム全体のファイルディスクリプタ数

CentOS5の場合、ファイルディスクリプタはデフォルトで大きな値が設定されている。

# cat /proc/sys/fs/file-max 
50871

もしくは、

# sysctl -a | grep file-max
fs.file-max = 50871

これを変更するには、

# cat '65536' > /proc/sys/fs/file-max

もしくは

# sysctl -w fs.file-max=50871

とすればそのまま反映される。ただし、再起動するとデフォルトに戻ってしまうので、/etc/sysctl.confに記載する。

# vi /etc/sysctl.conf
fs.file-max=50871

ユーザごとのファイルディスクリプタ数

システム全体のファイルディスクリプタ数とは別に、各ユーザごとのファイルディスクリプタ数の上限も決まっている。

# ulimit -a
open files                      (-n) 1024

こちらはデフォルトが1024となっており、"Too Many Open Files" が発生する場合はこちらに引っかかっていることが多い。

これを変更するには

# ulimit -n 2048
# ulimit -a 
open files                      (-n) 2048

とすればその場で反映される。ただしこちらも再起動するとデフォルトに戻ってしまうので、その場合は/etc/security/limits.confに記載する。

# vi /etc/security/limits.conf
user1 soft nofile 2048
user1 hard nofile 2048