問題点

ログファイルにはエラー「Too many files」が含まれていて、CRX が応答しません。

解決策

オープンファイル設定の最大数を増やします。

一部の CRX の動作には、より多くのオープンファイルを持てるようなシステム設定が必要です。例えば、lucene インデックスを再構成する場合は、オープンファイルの最大数の設定を増やす必要があります。

CRX シェルセッションのオープンファイルの上限を引き上げる

ユーザーのオープンファイルの上限数を確認し、CRX プロセスが実行されるユーザーと同じユーザーとして以下を実行します:

ulimit -Sn ulimit -Hn

CRX/CQ のデフォルトの開始スクリプトを使用する場合は、次の手順を実行して上限を引き上げます:

  1. crx-quickstart/server/start を編集モードで開きます
  2. スクリプトの先頭に CQ_ MAX_ OPEN_ FILES という名前の変数を追加します。

    CQ_MAX_OPEN_FILES=8192 export CQ_MAX_OPEN_FILES

CRX 起動時に "-bash: ulimit: open files: cannot modify limit: Operation not permitted" というエラーが出る場合は、上記の設定では動きません。

その代わり、/etc/security/limits.conf 内の上限数を増やしてください。ユーザー制限の再設定方法について詳しくは、以下を参照してください。

JBoss や Websphere などのサードパーティ製アプリケーションサーバーを使用している場合は、ベンダーのマニュアルを確認しながら、以下のセクションに従ってください。

注意:

この記事のいずれの設定も問題を解決しない場合は、コマンド lsof -p を使用して、どのファイルが開いているのか確認してください。(-p は、問題をおこしているのプロセスの id です。)あなたのアプリケーションがファイルハンドルを開いたままにしている可能性があります。ハンドルが、あなたのアプリケーションではなく、ほとんど CRX によって保持されている場合は、サポートにお問い合わせください。

ユーザーの上限を引き上げる

ルート以外のユーザーの最大オープンファイル数を変更するには、/etc/security/limits.conf を変更します。ユーザーごとに制限を設定できます。

crx_process_username soft nofile 8092

crx_process_username hard nofile 20000

注意:

この設定は、次回ユーザーがログインするまで有効になりません。

システムの上限を引き上げる

ユーザーの上限には余裕があっても、システム自体が最大ファイル数に達する場合があります。su/root ユーザーとして以下を実行します。

  1. オペレーティングシステムの最大オープンファイル数設定を確認します(20000未満だった場合、この設定をする意味があります。)

    cat /proc/sys/fs/file-max

  2. 次の行を /etc/sysctl.conf に追加してシステムの最大オープンファイル数を増やします:

    fs.file-max = 300000

  3. 次のコマンドを実行します。

    sysctl -p

  4. このコマンドを実行すると、新しい値が表示されていることを確認します。

    cat /proc/sys/fs/file-max

注意:

この設定は、次回ユーザーがログインするまで有効になりません。

追加情報

このエラーは、システムまたはユーザーが最大数のファイルハンドルを使用している場合に発生します。

ダウンロード

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー