OSのファイル数設定

概要

Linux系OSでのファイルディスクリプタ設定について説明します。

Linux系OSでのファイルディスクリプタについて

Linux系OSではファイルディスクリプタの上限値が標準で『1024』となっています。

x-Servletで古い画像変換モジュールを使用していると画像変換時に作業ファイルを作成しますがx-Servletが稼働中もファイルをオープンしているためファイルディスクリプタの上限を超える場合があります。

ファイルディスクリプタ設定の変更方法

  1. 現在の状態を確認します。
    $cat /proc/sys/fs/file-nr
    1352    456     16384

    表示される数字はそれぞれ

    [割り当て済みのファイルハンドル数][使用中のファイルハンドル数][設定できる最大数]

    を示しています。(数値は環境によって異なります)

  2. ファイルディスクリプタの上限値を変更します。
    上記の場合、1352 以上、16384 以下にするため余裕を見て上限値を 4096 とします。
    $ulimit -n 4096

※上記の設定はOSを再起動すると無効となりますのでOS起動時に上記(2)のコマンドを実行するようにしてください。

※その他ファイルディスクリプタの設定に関してはOSのマニュアルを参照してください。

エラーメッセージ

上限値を超えた場合はerror.logに以下のようなエラーが出力され、端末には応答を返しません。

  • error.log
    WARN [YYYY/MM/DD hh:mm:ss] - WebContentsGetter:IOException.
    java.net.SocketException: Too many open files

注意事項

JDK1.6系の環境で x-Servlet 画像変換モジュールが xproxy_image_222.jar 以下の場合、無駄なファイルディスクリプタを消費します。

この場合はファイルディスクリプタの上限の調整の前に画像変換モジュールを xproxy_image_223.jar 以上にアップデートしてから調整してください。

TOP