Jira performance degradation in boards, queues, or searches after upgrading to 9.11.x/5.11.x

お困りですか?

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

コミュニティに質問

プラットフォームについて: 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 は除く

要約

After upgrading to Jira Software version 9.11.x or Jira Service Management version 5.11.x users are hit with Jira performance degradation. Areas of application that are utilizing Jira search are the ones being impacted. The most common examples reported by end users are:

  • Jira Software Boards and backlogs are taking a very long time to load.
  • Jira Service Management Queues are taking a very long time load.
  • Jira Basic Search is very slow.
  • Jira Dashboards are very slow.

At the same time Operations team might notice increased activity on Jira database in the form of database reads.

環境

  • Jira Software 9.11.x
  • Jira Service Management 5.11.x

診断

This issue can be observed during working hours by examining the application thread dumps and database activity.

スレッド ダンプ

You can examine the threads by following the steps in this article: Generating a thread dump. These are the threads of interest:

  • http-nio-8081-exec-xyz url: /jira/rest/greenhopper/1.0/xboard/work/allData.json; user: user
  • http-nio-8080-exec-xyz url: /rest/servicedesk/{id}/{PKEY}/webfragments/sections/sd-queues-nav,servicedesk.agent.queues,servicedesk.agent.queues.ungrouped; user:user

The stack trace looks like this, and there are frequent database calls to the database from DefaultWorkflowSchemeManager.

org.ofbiz.core.entity.jdbc.SQLProcessor.executeQuery(SQLProcessor.java:548)
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)
org.ofbiz.core.entity.GenericDelegator.getRelated(GenericDelegator.java:1509)
org.ofbiz.core.entity.GenericDelegator.getRelated(GenericDelegator.java:1439)
com.atlassian.jira.ofbiz.DefaultOfBizDelegator.getRelated(DefaultOfBizDelegator.java:351)
com.atlassian.jira.ofbiz.WrappingOfBizDelegator.getRelated(WrappingOfBizDelegator.java:208)
com.atlassian.jira.scheme.AbstractSchemeManager.getEntities(AbstractSchemeManager.java:247)
com.atlassian.jira.workflow.DefaultWorkflowSchemeManager.getNonDefaultEntities(DefaultWorkflowSchemeManager.java:397)
com.atlassian.jira.bc.config.DefaultConstantsService$IsStatusVisible$1.getWorkflowNames(DefaultConstantsService.java:188)
com.atlassian.jira.bc.config.DefaultConstantsService$IsStatusVisible.hasMoreWorkflows(DefaultConstantsService.java:240)
com.atlassian.jira.bc.config.DefaultConstantsService$IsStatusVisible.findMoreStatuses(DefaultConstantsService.java:221)
com.atlassian.jira.bc.config.DefaultConstantsService$IsStatusVisible.apply(DefaultConstantsService.java:213)
com.atlassian.jira.bc.config.DefaultConstantsService.isStatusVisible(DefaultConstantsService.java:117)
com.atlassian.jira.bc.config.DefaultConstantsService.getStatusByNameIgnoreCase(DefaultConstantsService.java:89)
com.atlassian.jira.jql.resolver.StatusResolver.getConstant(StatusResolver.java:34)
com.atlassian.jira.jql.resolver.ConstantsNameResolver.getIdsFromName(ConstantsNameResolver.java:25)
com.atlassian.jira.jql.resolver.IssueConstantInfoResolver.getIndexedValues(IssueConstantInfoResolver.java:32)
com.atlassian.jira.jql.query.AbstractOperatorQueryFactory.getIndexValues(AbstractOperatorQueryFactory.java:54)
com.atlassian.jira.jql.query.AbstractEqualityQueryFactory.createQueryForMultipleValues(AbstractEqualityQueryFactory.java:46)
com.atlassian.jira.jql.query.GenericClauseQueryFactory.getQuery(GenericClauseQueryFactory.java:57)
com.atlassian.jira.jql.query.StatusClauseQueryFactory.getQuery(StatusClauseQueryFactory.java:30)
com.atlassian.jira.jql.query.ContextAwareQueryVisitor.visit(ContextAwareQueryVisitor.java:98)
com.atlassian.jira.jql.query.ContextAwareQueryVisitor.visit(ContextAwareQueryVisitor.java:27)
com.atlassian.query.clause.TerminalClauseImpl.accept(TerminalClauseImpl.java:143)
com.atlassian.jira.jql.query.ContextAwareQueryVisitor.visit(ContextAwareQueryVisitor.java:57)
com.atlassian.jira.jql.query.ContextAwareQueryVisitor.visit(ContextAwareQueryVisitor.java:27)
com.atlassian.query.clause.AndClause.accept(AndClause.java:28)
com.atlassian.jira.jql.query.QueryVisitor.createQuery(QueryVisitor.java:51)
com.atlassian.jira.jql.query.DefaultLuceneQueryBuilder.createLuceneQuery(DefaultLuceneQueryBuilder.java:29)
com.atlassian.jira.issue.search.providers.LuceneSearchProvider.createLuceneQuery(LuceneSearchProvider.java:343)
com.atlassian.jira.issue.search.providers.LuceneSearchProvider.getHitCount(LuceneSearchProvider.java:184)
com.atlassian.jira.issue.search.providers.LuceneSearchProvider.getHitCount(LuceneSearchProvider.java:148)
com.atlassian.jira.bc.issue.search.DefaultSearchService.searchCount(DefaultSearchService.java:130)

Database Activity

Jira ends up executing a few thousand SQL select statements within one second, and half a million within one minute. This exact number will vary depending on the number of workflow schemes, JQL used, and user activity. This is the query in question: 

SELECT ID, SCHEME, WORKFLOW, issuetype FROM public.workflowschemeentity WHERE SCHEME=?


原因

During the development of Jira 9.11/5.11, the way workflow statuses are loaded was changed, and this introduced search performance regression that affected many areas of the application. 

回避策

ソリューション

To permanently resolve the performance issue please upgrade your Jira Software to version 9.12.x or Jira Service Management to version 5.12.x.




最終更新日 2024 年 4 月 22 日

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

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