Jira が低速で、複数のコネクションの危険な使用によるエラーがログに記録される

お困りですか?

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

コミュニティに質問

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

問題

Jira アプリケーションが、利用負荷が高いときに低速になる

診断

Jira 5.0.3 以降をご利用の場合、Jira アプリケーション内でコネクション プールを監視できます。メニューの歯車アイコン > [システム] > [データベース監視] に移動すると、直近 6 時間のコネクション プールの統計情報のグラフが表示されます。

アクティブなコネクションの数がプール内の最大コネクション数に常に一致しているかそれに近い場合 (グラフのスケールは利用可能なコネクションの最大数です。上記例では 20)、Jira がプール枯渇状態になっていることがわかります。

atlassian-jira.log に次の行が記録される場合があります。

2016-03-11 08:40:40,409 Caesium-1-2 WARN anonymous [c.a.jira.ofbiz.ConnectionPoolHealthSqlInterceptor] Dangerous use of multiple connections: taken => count=3; marks=[2-3]; pool=2/20
2016-03-11 08:40:40,409 Caesium-1-2 WARN anonymous [c.a.jira.ofbiz.ConnectionPoolHealthSqlInterceptor] Dangerous use of multiple connections: replaced => count=2; marks=[1-3]; pool=1/20
2016-03-11 08:40:40,409 Caesium-1-2 WARN anonymous [c.a.jira.ofbiz.ConnectionPoolHealthSqlInterceptor] Dangerous use of multiple connections: replaced => count=1; marks=[0-3]; pool=0/20
2016-03-11 08:40:40,409 Caesium-1-2 WARN anonymous [c.a.jira.ofbiz.ConnectionPoolHealthSqlInterceptor] Dangerous use of multiple connections: replaced => count=0; marks=[-1-3]; pool=-1/20

Jira 5.0.3 よりも前のバージョンを利用している場合、このような挙動を確認する最適な方法はスレッド ダンプの生成です。以降は、この問題を示すスレッド ダンプのスニペット例です。

"Thread-4" prio=6 tid=0x16d85988 nid=0xe20 in Object.wait() [0x17d9f000..0x17d9fce8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x04139d18> (a org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
        at java.lang.Object.wait(Object.java:474)
        at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:748)
        - locked <0x04139d18> (a org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
        at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
        at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
        at org.ofbiz.core.entity.transaction.JNDIFactory.getJndiConnection(JNDIFactory.java:168)
        at org.ofbiz.core.entity.transaction.JNDIFactory.getConnection(JNDIFactory.java:140)
        at org.ofbiz.core.entity.TransactionFactory.getConnection(TransactionFactory.java:99)
        at org.ofbiz.core.entity.ConnectionFactory.getConnection(ConnectionFactory.java:53)
        at com.atlassian.jira.upgrade.ConnectionKeeper.openConnections(ConnectionKeeper.java:106)
        at com.atlassian.jira.upgrade.ConnectionKeeper.run(ConnectionKeeper.java:87)

この問題を示す行は次のものです。

        - locked <0x04139d18> (a org.apache.tomcat.dbcp.pool.impl.GenericObjectPool)
        at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)

原因

Jira アプリケーションに設定されたコネクション プールのデフォルト値は 20 で、通常の利用であればこれで十分です。インストールされたユーザー プラグイン数が、利用されるデータベース コネクションの数に影響し、それによってプール サイズを増やす必要があります。

ソリューション

Jira 5.1 以降

Jira 設定ツールを使うか dbconfig.xml を編集して、コネクション プールの最大コネクション数を増やします。Maximum Size のパラメーターを増やします。「Jira をデータベースに接続する」で指定されているように、対象のデータベース ドキュメントでの定義に従って推奨される dbconfig.xml を利用することをおすすめします。

Jira 5.1 - 4.4

dbconfig.xml を編集して pool-max-size, pool-min-size and pool-max-idle パラメーターを増やしますdbconfig.xml の編集の詳細については「Jira をデータベースに接続する」をご確認ください

Jira 4.4 以前

conf/server.xml を編集して maxActiveminIdle、および maxIdle パラメーターを増やします。conf/server.xml の編集の詳細については「Jira をデータベースに接続する」をご確認ください。構成例は次のとおりです。

 <Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"
                username="sa"
                password=""
                driverClassName="org.hsqldb.jdbcDriver"
                url="jdbc:hsqldb:${catalina.home}/database/jiradb"
                minEvictableIdleTimeMillis="4000"
                timeBetweenEvictionRunsMillis="5000"
                    maxActive="20"
                    minIdle="4"
                    maxIdle="8"
                />

これらの値の意味については Apache DBCP のドキュメントをご確認ください。

説明Jira アプリケーションが利用負荷の高いタイミングで低速になる場合、データベース コネクションに関連するパフォーマンスの問題を特定するためにこの記事を利用できます。
製品Jira
プラットフォームサーバー
最終更新日 2019 年 9 月 25 日

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

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