ファイルディスクリプタの上限変更
確認
$ 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 # --- 略 ---
該当プロセスが開いているファイル数はこれで確認できる
ls /proc/#{pid}/fd | wc -l
削除済のファイルを掴んでいるのもわかる
ls -la /proc/#{pid}/fd # 出てきたリストに (deleted) と表示されていれば、削除済ファイルを掴んでいる
参考にさせていただきました。
@IT:/procによるLinuxチューニング [後編](2/4)