コピペコードで快適生活

明日使えるソースを自分のために

ファイルディスクリプタの上限変更

確認

$ cat /proc/sys/fs/file-nr
576	0	1636820

file-nr内のパラメータはそれぞれ、

  • オープンされているファイル数
  • 空きファイル管理データの数
  • システム中のオープンファイル管理データの最大数

を示します。

一時的な設定

ログインプロセスとその子プロセスでのみ有効。

# 確認
$ ulimit -n
1024

# 変更
$ ulimit -n 2048

恒久的な設定

システム全体
# 確認
cat /proc/sys/fs/file-nr

$ sudo vi /etc/sysctl.conf
# fs.file-max = 1232457
# を追記する

# 設定を反映
sudo /sbin/sysctl -p

# 確認
cat /proc/sys/fs/file-nr
ユーザごと

nodoc

daemonプロセス

limits.confに設定した値は、ログインしないdameonプロセスには効かないので、
起動スクリプト(/etc/init.d/*)に

ulimit -n 123456

を追記して対応する。

当該プロセスのファイルディスクリプタ上限の確認は下記でわかる。

cat /proc/#{pid}/limits
Limit                     Soft Limit           Hard Limit           Units
# --- 略 ---
Max open files            500000               500000               files
# --- 略 ---

参考にさせていただきました。
@IT:/procによるLinuxチューニング [後編](2/4)

ファイルオープン数が上限値に達した|ざる魂

デーモンごとにulimitで設定した値を確認する - foxtrot0304's diary