Backlog is slow to load

お困りですか?

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

コミュニティに質問

問題

The Backlog is slow to load. 

診断

環境

  • JIRA 6.1 or 6.2 with JIRA Agile 6.6.60 or higher.
  • A high number of Epic Links present on the board.

Diagnostic Steps

  • Generating a Thread Dump while the board is loading indicates a lock while waiting for a database response:

    "http-bio-8080-exec-18" daemon prio=5 tid=0x00007ff3d097a000 nid=0x7607 runnable [0x000000011a475000]
       java.lang.Thread.State: RUNNABLE
    	at java.net.SocketInputStream.socketRead0(Native Method)
    	at java.net.SocketInputStream.read(SocketInputStream.java:152)
    	at java.net.SocketInputStream.read(SocketInputStream.java:122)
    	at java.io.DataInputStream.readFully(DataInputStream.java:195)
    	at java.io.DataInputStream.readFully(DataInputStream.java:169)
    	at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:842)
    	at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:723)
    	- locked <0x00000007a33f0b98> (a java.util.ArrayList)
    	at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466)
    	at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103)
    	at net.sourceforge.jtds.jdbc.ResponseStream.peek(ResponseStream.java:88)
    	at net.sourceforge.jtds.jdbc.TdsCore.wait(TdsCore.java:3932)
    	at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1046)
    	- locked <0x00000007f9950fe0> (a net.sourceforge.jtds.jdbc.TdsCore)
    	at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:465)
    	at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:778)
    	- locked <0x00000007a33f0680> (a net.sourceforge.jtds.jdbc.ConnectionJDBC3)
    	at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    	at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    	at org.ofbiz.core.entity.jdbc.SQLProcessor.executeQuery(SQLProcessor.java:597)
    	at org.ofbiz.core.entity.GenericDAO.selectListIteratorByCondition(GenericDAO.java:851)
    	at org.ofbiz.core.entity.GenericDAO.selectByAnd(GenericDAO.java:725)
    	at org.ofbiz.core.entity.GenericHelperDAO.findByAnd(GenericHelperDAO.java:150)
    	at org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:901)
    	at org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:879)
    	at org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:848)
    	at com.opensymphony.module.propertyset.ofbiz.OFBizPropertySet.findPropertyEntry(OFBizPropertySet.java:298)
    	at com.opensymphony.module.propertyset.ofbiz.OFBizPropertySet.get(OFBizPropertySet.java:266)
    	at com.opensymphony.module.propertyset.AbstractPropertySet.getLong(AbstractPropertySet.java:247)
    	at com.atlassian.jira.propertyset.JiraCachingPropertySet.getLong(JiraCachingPropertySet.java:424)
    	at com.atlassian.greenhopper.service.PersistenceServiceImpl.getLong(PersistenceServiceImpl.java:63)
    	at com.atlassian.greenhopper.service.properties.PropertyDao.getLongProperty(PropertyDao.java:29)
    	at com.atlassian.greenhopper.service.issuelink.EpicCustomFieldServiceImpl.getDefaultFieldOrNull(EpicCustomFieldServiceImpl.java:181)
    	at com.atlassian.greenhopper.service.issuelink.EpicCustomFieldServiceImpl.getDefaultField(EpicCustomFieldServiceImpl.java:163)
    	at com.atlassian.greenhopper.service.issuelink.EpicCustomFieldServiceImpl.getDefaultEpicLinkField(EpicCustomFieldServiceImpl.java:85)
    	at com.atlassian.greenhopper.web.rapid.issue.fields.EpicLinkFieldEntryFactory.createViewEntry(EpicLinkFieldEntryFactory.java:57)
    	at com.atlassian.greenhopper.web.rapid.issue.fields.EpicLinkFieldEntryFactory.createViewEntry(EpicLinkFieldEntryFactory.java:23)
    	at com.atlassian.greenhopper.web.rapid.list.ExtraFieldsHelper.renderField(ExtraFieldsHelper.java:136)
    	at com.atlassian.greenhopper.web.rapid.list.ExtraFieldsHelper.renderField(ExtraFieldsHelper.java:105)
    	at com.atlassian.greenhopper.web.rapid.list.EpicCallbackComponent.processFieldData(EpicCallbackComponent.java:49)
    	at com.atlassian.greenhopper.web.rapid.list.RapidIssueEntryCallback.createVisibleEntry(RapidIssueEntryCallback.java:249)
    	at com.atlassian.greenhopper.web.rapid.list.RapidIssueEntryCallback.fieldData(RapidIssueEntryCallback.java:207)
    	at com.atlassian.greenhopper.service.issue.callback.AbstractCompoundDataCallback.issueComplete(AbstractCompoundDataCallback.java:45)
    	at com.atlassian.greenhopper.service.issue.callback.ComposedIssueDataCallback.issueComplete(ComposedIssueDataCallback.java:75)
    	at com.atlassian.greenhopper.service.issue.IssueDataCollector.collect(IssueDataCollector.java:86)
    	at com.atlassian.greenhopper.service.issue.IssueDataCollector.collect(IssueDataCollector.java:58)
    	at com.atlassian.jira.issue.search.providers.LuceneSearchProvider.searchAndSort(LuceneSearchProvider.java:478)
    	at com.atlassian.jira.issue.search.providers.LuceneSearchProvider.searchAndSort(LuceneSearchProvider.java:179)
    	at sun.reflect.GeneratedMethodAccessor574.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at com.atlassian.plugin.osgi.hostcomponents.impl.DefaultComponentRegistrar$ContextClassLoaderSettingInvocationHandler.invoke(DefaultComponentRegistrar.java:129)
    	at com.sun.proxy.$Proxy265.searchAndSort(Unknown Source)
    	at sun.reflect.GeneratedMethodAccessor574.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:154)
    	at com.sun.proxy.$Proxy265.searchAndSort(Unknown Source)
    	at com.atlassian.greenhopper.service.issue.IssueDataServiceImpl.findImpl(IssueDataServiceImpl.java:156)
    	at com.atlassian.greenhopper.service.issue.IssueDataServiceImpl.findAndSortWithServiceOutcome(IssueDataServiceImpl.java:63)
    	at com.atlassian.greenhopper.web.rapid.list.RapidIssueEntryQueryServiceImpl.collectIssues(RapidIssueEntryQueryServiceImpl.java:713)
    	at com.atlassian.greenhopper.web.rapid.list.RapidIssueEntryQueryServiceImpl.collectPlanModeIssues(RapidIssueEntryQueryServiceImpl.java:361)
    	at com.atlassian.greenhopper.web.rapid.plan.PlanningModeServiceImpl.getBacklogIssuesAndSprintAssignment(PlanningModeServiceImpl.java:96)
    	at com.atlassian.greenhopper.web.rapid.plan.PlanningModeHelper.loadNewBacklogData(PlanningModeHelper.java:123)
    	at com.atlassian.greenhopper.web.rapid.plan.PlanningModeResource$1.call(PlanningModeResource.java:95)
    	at com.atlassian.greenhopper.web.rapid.plan.PlanningModeResource$1.call(PlanningModeResource.java:84)
    	at com.atlassian.greenhopper.web.util.RestCall.response(RestCall.java:42)
    	at com.atlassian.greenhopper.web.AbstractResource.createResponse(AbstractResource.java:100)
    	at com.atlassian.greenhopper.web.AbstractResource.response(AbstractResource.java:81)
    	at com.atlassian.greenhopper.web.rapid.plan.PlanningModeResource.getBacklogData(PlanningModeResource.java:83)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  • Looking at the Network tab in Google Chrome's Developer Tools shows a large amount of time spent on the /rest/greenhopper/1.0/xboard/plan/backlog request:

原因

  • The main suspicion at the moment is that JIRA Agile is running a lot of SQL requests that are holding up the threads while loading the Backlog. A more efficient way to handle this is currently being tracked as part of  GHS-6925 - Getting issue details... STATUS  and  GHS-10819 - Getting issue details... STATUS .

 

ソリューション

  • JIRA 6.3 or later has been noted to improve the performance when loading the Backlog
最終更新日: 2016 年 2 月 26 日

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

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