Too many open files エラー

お困りですか?

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

コミュニティに質問

プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

問題

atlassian-confluence.log に次のメッセージが表示される。

Caused by: net.sf.hibernate.HibernateException: I/O errors during LOB access
	at org.springframework.orm.hibernate.support.AbstractLobType.nullSafeSet(AbstractLobType.java:163)
	at net.sf.hibernate.type.CustomType.nullSafeSet(CustomType.java:118)
	at net.sf.hibernate.persister.EntityPersister.dehydrate(EntityPersister.java:387)
	at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:460)
	at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:436)
	at net.sf.hibernate.impl.ScheduledInsertion.execute(ScheduledInsertion.java:37)
	at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2464)
	at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2450)
	at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2407)
	at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2276)
	at com.atlassian.confluence.pages.persistence.dao.hibernate.HibernateAttachmentDataDao.save(HibernateAttachmentDataDao.java:63)
	... 17 more
Caused by: java.io.IOException: Too many open files

原因

Confluence で利用されているインデックス システムである Lucene では、Confluence での NFS マウントはサポートされません。NFS マウントの利用はこの挙動を発生させることが確認されています。詳細な情報を Lucene のドキュメントでご確認ください。

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

ソリューション

これを解決するには、オープンできるファイルの上限を増やす必要があります。

  1. Confluence をシャットダウンします。
  2. ターミナルで次のコマンドを実行し、ご利用のシステムでのファイル ハンドラの上限数を確認します。

    ulimit -aS | grep open
  3. ファイル ハンドラの上限を設定するには、<Confluence のインストール ディレクトリ>/bin/setenv.sh ファイルに次の行を追加します。数字はアプリケーションの需要に応じて変更できます。

    ulimit -n 32768

    すべての制限設定はログイン時に設定されます。これらはグローバルでも永続的なものでもなく、セッションの間のみ存在します。これによって Confluence が開始されるたびに値が設定されますが、Confluence のアップグレード時には手動で移行する必要があります。永続的なソリューションについては以降をご確認ください。

  4. その後、変更を反映するために Confluence を再起動する必要があります。

limits.conf ファイルに基づく制限

以降の手順は永続的なソリューションとして提案されており、「Jira サーバーでの Too many open files エラー」に基づいています。

  1. root として、/etc/security/limits.conf ファイルを次のエントリで編集します。1 列目の値は、Confluence アプリケーションを実行している OS ユーザーを参照します。この例ではユーザーの名前は confluence です。

    confluence      soft    nofile  32768
    confluence      hard    nofile  32768

     値 32768 は大規模なインスタンスに推奨されますが、ご利用の環境によって異なる可能性があります。

  2. debian ベースの Linux ディストリビューション (Ubuntu) など) の場合、root として /etc/pam.d/common-session を次のエントリで編集します。

    session required pam_limits.so
  3. サーバーを再起動します。

  4. 新しい値がアプリケーションによって使われているのを確認するため、サポート zip を取得し、application-properties/application.xml ファイル内で max-file-descriptor 属性を探します。

    <max-file-descriptor>32,768</max-file-descriptor>

Confluence が systemd サービスとしてインストールされている場合のソリューション

When Confluence is installed as a systemd service you may need to update the service file (systemd service configuration) as described below.
If you are sure Confluence is running as a systemd service, go straight to Step 2.

  1. Confluence が systemd サービスとして構成されているかどうかを確認します。これは、問題の切り分けや、サービス名が不明な場合はその確認に役立ちます。

    grep -i confluence /etc/systemd/system/*.service /lib/systemd/system/*.service

    この例では、サービスの名前は confluence.service で、これはユニット ファイルとも同名であり、標準フォルダ /etc/systemd/system に配置されていることがわかります。


  2. サービス ユニット ファイル (この例では /etc/systemd/system/confluence.service) を編集して次の行を追加します。

    LimitNOFILE=32768

    値 32768 は大規模なインスタンスに推奨されますが、ご利用の環境によって異なる可能性があります。

  3. Execute the following command to reload the changes or modifies the systemd unit files. These unit files are placed in the “/etc/systemd/system” directory and require reloading if any changes are made to them.

    systemctl daemon-reload

       4. サーバーを再起動します。

       5.新しい値がアプリケーションによって使われているのを確認するため、サポート zip を取得し、application-properties/application.xml ファイル内で max-file-descriptor 属性を探します。

<max-file-descriptor>32,768</max-file-descriptor>




説明 Confluence で利用されるインデックス システムである Lucene では、Confluence での NFS マウントはサポートされていません。この挙動を発生させる原因として NFS マウントの利用が確認されています。
製品Confluence
プラットフォームServer,
最終更新日 2023 年 6 月 14 日

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

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