株式会社エスロジカル
株式会社エスロジカル
SSL証明書(3,300円/1年~ DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

Linux:/proc/ によるファイルオープン上限数の制御 (/proc/sys/fs/file-*)

技術ドキュメント目次 -> Linux -> /proc/ によるファイルオープン上限数の制御 (/proc/sys/fs/file-*)

本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。

サイフにやさしいSSL証明書
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。


◆ はじめに

カーネル2.4系の Linux では(おそらくカーネル2.2も)、
オープン可能なファイル数の上限や、ファイルをオープンしている数の統計を、
/proc/ 以下にある次の2つのファイルを参照することで確認することができます。

/proc/sys/fs/file-max
        オープン可能なファイル数の上限を確認でる。
        値の変更を行うことも可能。

/proc/sys/fs/file-nr
        次の3つの情報を確認することが可能です。
        1. 今までにオープンしたことのあるファイルの最大数
           (割り当て済みのファイルハンドル数 )
        2. 現在オープンしているファイルの総数
           (使用中のファイルハンドル数 )
        3. オープン可能なファイル数の上限
           (/proc/sys/fs/file-max と同じ値)

◆ /proc/sys/fs/file-max と /proc/sys/fs/file-nr の内容を参照

上記2枚のファイルの内容をcatコマンドで参照してみると次のようになっています。

# cat /proc/sys/fs/file-max
30000
# cat /proc/sys/fs/file-nr
5594     2114     30000
#


上記の例では、
このLinuxマシンでは 30000枚までファイルハンドルを開くことができ、
OS起動後から今までに 最大5594のファイルハンドルを同時に使用したことがあり、
現在は 2114 のファイルをオープンしているといった情報を得ることができます。

5594の値が 30000 に近づいてきたら、
ファイルをオープンできる上限数に近づいてきていますので、
次のようにして上限数を増加させておきましょう。
(ほおっておくと、実行中のデーモンからファイルをOpenできないというエラーが返されるなど、プログラムが正常に動かなくなることが想定されます。)

ファイルをオープンできる上限に達する現象は、
非常に負荷の高いWEBサーバーなどでみられることがあります。

◆ オープン可能なファイル数の上限を変更

オープン可能なファイル数の上限を変更するには次のようにします。

# echo "50000" > /proc/sys/fs/file-max


OS再起動後も設定が有効になるようにするためには、
上記の echo 文を、起動シェル(/etc/rc.d/rc.local など)に加えておきましょう。



■ Linux についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. このドキュメントへの評価をご選択ください。
         

2. ご感想をお書きください。