One of Advance Roadmap plan takes significantly longer time to load than the plan.



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

このナレッジベース記事は製品の Data Center バージョン用に作成されています。Data Center 固有ではない機能の Data Center ナレッジベースは、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。

*Fisheye および Crucible は除く

要約

This article describes a scenario where one of the Advance Roadmap plan takes almost 6 minutes to load, while the other Roadmap plans loads quickly. 

環境

Jira Software 9.12.x , Jira Software 10.x

診断

  • Users can generate the har file and check the time required to complete the request
  • In this case it is observed that request takes around 3 minute to complete. Status is 200. 
  • As we have observed the issue is from server side, to further diagnose the problem, generated thread dumps. For more information on generation of thread dumps please refer documentation.  
  • Thread-dump shows, the request is waiting for response from Database. Thus slowness is from Database.
04:05:52 - http-nio-8051-exec-111 url:/secure/PortfolioPlanView.jspa; user: someUser
State: RUNNABLE
CPU usage: 0.00%
Running for: 226:22.32
Waiting for
This thread is not waiting for notification on any lock
Locks held
This thread holds [0x7F8026172900, 0x7f8026470840, 0x7f8026470840]
Stack trace
java.net.SocketInputStream.socketRead0(java.base@11.0.19/Native Method)
java.net.SocketInputStream.socketRead(java.base@11.0.19/SocketInputStream.java:115)
java.net.SocketInputStream.read(java.base@11.0.19/SocketInputStream.java:168)
java.net.SocketInputStream.read(java.base@11.0.19/SocketInputStream.java:140)
com.mysql.cj.protocol.ReadAheadInputStream.fill(ReadAheadInputStream.java:107)
com.mysql.cj.protocol.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:150)
com.mysql.cj.protocol.ReadAheadInputStream.read(ReadAheadInputStream.java:180)
java.io.FilterInputStream.read(java.base@11.0.19/FilterInputStream.java:133)
com.mysql.cj.protocol.FullReadInputStream.readFully(FullReadInputStream.java:64)
com.mysql.cj.protocol.a.SimplePacketReader.readHeaderLocal(SimplePacketReader.java:81)
com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:63)
com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:45)
com.mysql.cj.protocol.a.TimeTrackingPacketReader.readHeader(TimeTrackingPacketReader.java:52)
com.mysql.cj.protocol.a.TimeTrackingPacketReader.readHeader(TimeTrackingPacketReader.java:41)
com.mysql.cj.protocol.a.MultiPacketReader.readHeader(MultiPacketReader.java:54)
com.mysql.cj.protocol.a.MultiPacketReader.readHeader(MultiPacketReader.java:44)
com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:576)
com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:762)
com.mysql.cj.protocol.a.NativeProtocol.sendCommand(NativeProtocol.java:701)
com.mysql.cj.protocol.a.NativeProtocol.sendQueryPacket(NativeProtocol.java:1052)
com.mysql.cj.NativeSession.execSQL(NativeSession.java:657)
com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:893)
com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:972)
org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:122)
org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:122)
com.atlassian.jira.ofbiz.sql.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:42)
com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement.lambda$executeQuery$5(DiagnosticPreparedStatement.java:59)
com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement$$Lambda$4319/0x00007f77c94db058.execute(Unknown Source)
com.atlassian.diagnostics.internal.platform.monitor.db.DefaultDatabaseDiagnosticsCollector.recordExecutionTime(DefaultDatabaseDiagnosticsCollector.java:91)
com.atlassian.jira.diagnostic.connection.DatabaseDiagnosticsCollectorDelegate.recordExecutionTime(DatabaseDiagnosticsCollectorDelegate.java:62)
com.atlassian.jira.diagnostic.connection.DiagnosticPreparedStatement.executeQuery(DiagnosticPreparedStatement.java:59)
org.ofbiz.core.entity.jdbc.SQLProcessor.executeQuery(SQLProcessor.java:543)
org.ofbiz.core.entity.GenericDAO.createEntityListIterator(GenericDAO.java:882)
org.ofbiz.core.entity.GenericDAO.selectListIteratorByCondition(GenericDAO.java:862)
org.ofbiz.core.entity.GenericDAO.selectByAnd(GenericDAO.java:734)
org.ofbiz.core.entity.GenericHelperDAO.findByAnd(GenericHelperDAO.java:166)
org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:913)
org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:891)
com.atlassian.jira.ofbiz.DefaultOfBizDelegator.findByAnd(DefaultOfBizDelegator.java:92)
com.atlassian.jira.ofbiz.WrappingOfBizDelegator.findByAnd(WrappingOfBizDelegator.java:73)
com.atlassian.jira.issue.customfields.manager.DefaultOptionsManager.findByParentId(DefaultOptionsManager.java:189)
com.atlassian.jira.issue.customfields.manager.CachedOptionsManager.access$801(CachedOptionsManager.java:31)
  • From thread-dump stack-trace we find that there is a database request from findByParentId method of DefaultOptionsManager class.
com.atlassian.jira.issue.customfields.manager.DefaultOptionsManager.findByParentId(DefaultOptionsManager.java:189)


ソリューション

  • As slowness was observed for findByParentId, we checked the indexes for the respective table. 
  • Problem was resolved after creating database table Index on parentoptionid column of table customfieldoption.
  • Following query can be used to create this index on Mysql Database.

CREATE INDEX idx_parentoptionid ON customfieldoption (parentoptionid);








Last modified on Mar 5, 2025

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

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