この度、Linux系OS上において x-Servlet の画像変換機能の利用時に、エラーが発生する現象を確認しました。
つきましては、以下に x-Servlet をご導入いただいているお客様へ、現象の概要と対処方法についてお知らせ致します。
【概要】
Linux系OSでは標準でファイルディスクリプタの上限値は “1024”となっています。
x-Servlet で古い画像変換モジュールを使用していると画像変換時に作業ファイルを作成しますが、x-Servlet が稼働中もファイルをオープンしているためファイルディスクリプタの上限を超える場合があります。
上限値を超えた場合 error.log に「Too many open files」というエラーが出力され、端末には応答を返しません。
【対象】
以下の条件をすべて満たしている場合に上記のエラーが発生することがあります。
- Linux系OSを使用している。
- x-Servlet の画像変換機能を使用している。
- x-Servlet をインストールしたディレクトリにあるモジュールが “xproxy_image_221.jar”
もしくは “xproxy_image_222.jar”である。
- ※
- 『x-Servlet Version2.8.1』 以降を使用している場合は画像変換モジュールは、最新の “xproxy_image_223.jar”となっておりますのでこの問題は発生しません。
また、既に “xproxy_image_223.jar”に差し替えている場合もこの問題は発生しません。
【対処方法】
以下の2つの対処を行う必要があります。
- [ ファイルディスクリプタの上限値を上げる ]
x-Servlet の動作中であってもサービスを停止させることなく即時変更することができます。
- [ xproxy_image_223.jar にバージョンアップする ]
x-Servlet の再起動が必要となるため任意のタイミングで実施していただく必要があります。
【手順】
[ ファイルディスクリプタの上限値を上げる ]
現時点で問題が発生していない場合は上限値を上げる必要はありませんが、下記1の状態を確認し、今までオープンした最大数が “1024”に近い場合は上限値を上げてください。
- 現在の状態を確認します。
$cat /proc/sys/fs/file-nr
file-nr の表示例
1352 456 16384
表示される数字はそれぞれ
[今までオープンした最大数] [現在オープンしている数] [設定できる最大数]
を示しています。(数値は環境によって異なります)
- ファイルディスクリプタの上限値を変更します。
上記の場合“1352”以上、“16384”以下にするため余裕を見て上限値を “4096”とします。
$ulimit -n 4096
- ※
- 上記の設定はOSを再起動すると無効となりますので、OS起動時に上記「2」のコマンドを実行するようにしてください。
- ※
- その他ファイルディスクリプタの設定に関してはOSのマニュアルを参照してください。
[ xproxy_image_223.jar にバージョンアップする ]
- 画像変換モジュールを最新版である “xproxy_image_223.jar”に差し替えます。
モジュールはこのページの左上にある「ユーザログイン」からログインしていただきダウンロードしてください。
- start.sh の “XPROXY_CLASSPATH” を以下のように書き換えます。
[ 編集前 ]
XPROXY_CLASSPATH="xproxy.jar:xproxy_image_221.jar"
もしくは…
XPROXY_CLASSPATH="xproxy.jar:xproxy_image_222.jar"
[ 編集後 ]
XPROXY_CLASSPATH="xproxy.jar:xproxy_image_223.jar"
- 書き換え後、x-Servletを再起動します。
【確認方法】
[ ファイルディスクリプタの上限値確認 ]
コンソールから以下のコマンドを実行します。
$ulimit -a
結果として以下のように出力されていれば設定されています。
open files (-n) 4096
[ xproxy_image_223.jar のバージョンアップ確認 ]
再起動後、xInfo.log の <java.class.path> が以下のように出力されているか確認してください。
<java.class.path>=<xproxy.jar;xproxy_image_223.jar;jars/log4j-1.2.9.jar;.>
システムのテンポラリディレクトリに “jai-FCSS-?????.tmp” ファイルが作成されていないことを確認してください。
本件につきましてご不明点などありましたら、サポート窓口、もしくは担当営業までお問い合わせください。
株式会社KSK
ITソリューション事業部 フレックス・ファーム ビジネスユニット
x-Servlet サポート
Mail: