Jira サーバーの Too many open files エラー

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

症状

Jira アプリケーションの複数の領域で機能が全体的に悪化する。

atlassian-jira.log ログに次のエラーが表示される。

java.io.IOException: java.io.IOException: Too many open files

現在のオープン ファイル ハンドラの上限を確認するには、次のコマンドを実行します。

ulimit -aS | grep open

その後、次のような行を確認します。

open files                      (-n) 2560    

原因

UNIX システムでは、任意の 1 つのプロセスで同時にオープン可能なファイルの数に制限があります。ほとんどのディストリビューションのデフォルトは 1024 ファイルで、Jira アプリケーションの構成によってはこの数字は小さすぎます。この上限に達すると、上記の例外が生成され、Jira アプリケーションは現在の操作の完了に必要なファイルを開けないために動作に失敗します。

この挙動を発生させることが確認されているアプリケーション バグがあります。

  • JRA-29587 - 課題詳細を取得中... ステータス
  • JRA-35726 - 課題詳細を取得中... ステータス
  • JRA-39114 - Getting issue details... STATUS  (affects JIRA 6.2 and higher)
  • JRASERVER-68653 - 課題詳細を取得中... ステータス

Jira アプリケーションでの処理を改善する、次の改善リクエストがあります。

  • JRA-33887 - 課題詳細を取得中... ステータス
  • JRA-33463 - 課題詳細を取得中... ステータス

ソリューション


これらの変更は、Jira の開始時に組み込みの initd スクリプトを利用しているインストールでのみ機能します。systemd (Linux OS 用の最新バージョン) 用のカスタムのビルド サービスを利用しているインストールの場合、対象の systemd サービスで次のように変更を直接適用する必要があります。

[Service]
LimitNOFILE=20000

ほとんどの場合、Jira の setnenv.sh で ulimit を設定すると効果があります。

  1. $JIRA_HOME/caches/indexes フォルダが NFS でマウントされている場合はローカル マウントに移動します (Jira インスタンスと同じサーバー上のストレージ)。Jira アプリケーションのサポート対象プラットフォームにあるように NFS はサポートされておらず、NFS が利用されていると、この問題が非常に頻繁に発生します。
  2. Jira アプリケーションを停止します。
  3. $JIRA_INSTALL/bin/setenv.sh を編集し、次の内容をファイル上部に含めます。

    ulimit -n 16384

    これにより、Jira アプリケーションが開始されるたびにこの値が設定されます。ただし、Jira アプリケーションのアップグレードを行う際は手動の移行が必要です。

  4. Jira アプリケーションを開始します。
  5. /proc/<pid>/limits  を実行することで変更を確認できます。ここで <pid> はアプリケーションのプロセス ID です。

If you are using a JIRA application version with the bug in JRA-29587 - Getting issue details... STATUS , upgrade it to the latest version. If using NFS, migrate to a local storage mount.

一部のオペレーティング システムでは、制限の設定用に追加の構成が必要な場合があります。たとえば Ubuntu のユーザーは次の手順に従います (詳細についてはご利用のオペレーティング システムのマニュアルをご確認ください)

  1. 次のコマンドで limits.conf ファイルを変更します。
    sudo vim /etc/security/limits.conf 
  2. Jira アプリケーションを実行するユーザーについて次の内容を追加します。組み込みのインストーラーを利用した場合、これは jira になります。

    limits.conf
    #<domain>      <type>  <item>         <value>
    #
    #*               soft    core            0
    #root            hard    core            100000
    #*               hard    rss             10000
    #@student        hard    nproc           20
    #@faculty        soft    nproc           20
    #@faculty        hard    nproc           50
    #ftp             hard    nproc           0
    #ftp             -       chroot          /ftp
    #@student        -       maxlogins       4
    jira           soft    nofile          16384
    jira           hard    nofile          32768 
  3. common-session ファイルを次のように変更します。

    sudo vim /etc/pam.d/common-session
    (info) common-session は debian/ubuntu でのみ提供されるファイルです

  4. 次の行を追加します。

    common-session
    # The following changes were made from the JIRA KB (https://confluence.atlassian.com/display/JIRAKB/Loss+of+Functionality+due+to+Too+Many+Open+Files+Error):
    session required pam_limits.so
  5. Jira サーバー アプリケーションを再起動します。
tip/resting Created with Sketch.

非常に大規模なインスタンスの場合、Jira アプリケーションのスケールについては当社のパートナーにご相談いただくことをおすすめします。Jira のクラスタリングやロード バランサについての記事をご確認ください。



診断

オープンなままのファイルを特定するには lsof +L1 コマンドを利用できます。これにより、次のようなオープンなファイルの一覧を取得できます。

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NLINK     NODE NAME
java     2565  dos  534r   REG   8,17    11219     0 57809485 /home/dos/deploy/applinks-jira/temp/jar_cache3983695525155383469.tmp (deleted)
java     2565  dos  536r   REG   8,17    29732     0 57809486 /home/dos/deploy/applinks-jira/temp/jar_cache5041452221772032513.tmp (deleted)
java     2565  dos  537r   REG   8,17   197860     0 57809487 /home/dos/deploy/applinks-jira/temp/jar_cache6047396568660382237.tmp (deleted)

上記のソリューションが動作しない場合はアトラシアン サポートで詳細な調査を行うことができます。調整を依頼するには次のものをアトラシアン サポートに提供してください。

  1. lsof +L1 > open_files.txt によって生成されたファイル。
    (warning) このコマンドは、Jira ユーザーまたはファイルを閲覧可能なユーザーが実行している必要があります。たとえば、Jira が root として実行されている場合 (これは推奨されません)、jira としてコマンドを実行してもオープンなファイルは表示されません
  2. 例外が返されたタイミングで取得されたヒープ ダンプ。詳細については「ヒープ ダンプの生成」をご確認ください。
  3. Jira アプリケーションのサポート zip
最終更新日 2021 年 7 月 29 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.