Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-36224

Getting issue list via REST api has huge performance issues regardless number of fields requested or expand values

XMLWordPrintable

      We discovered that REST API performance that returns issues based on the JQL filter is extremely slow, making it impossible to use if you want to export more than a few issues.

      We have a project where we need to export the entire brief-list of issues (~20.000) in few seconds. Now this takes > 30 minutes ~ 1800 seconds

      • brief list = key, issuetype, summary and components.

      Because REST was useless, we implemented our own plugin that does exactly this in 5 seconds, which is more than 300x times faster.

      We didn't make any special tricks in order to get this performance so I guess that way REST API is implemented is the core problem.

      curl -n -o rest-hp-6.json  -H "Content-Type: application/json" --data '{"jql":"project = HP","startAt":0,"maxResults":1000,"fields":["id","key","components","issuetype"],"expand":[]}'  "https://jira.example.com/rest/api/2/search"
      

      Clearly there is something that increases the export time so much:

      get 100 issues : ~3 seconds
      get 500 issues : ~ 27 seconds
      get 1000 issues: ~55 seconds
      get 2000 issues: ~111 seconds

      Based on this I would say that the performance for more than 200-300 is ~18 issues/second, which is extremely slow for a high-end machine, and obviously that's not a limit imposed by the load of the sever or database.

      It's important to note that I did some testing regarding enabling or disabling gzip compression and it seems that it has no effect regarding timing.

              ohernandez@atlassian.com Oswaldo Hernandez (Inactive)
              73f0b2e75f82 Sorin Sbarnea (Citrix)
              Votes:
              17 Vote for this issue
              Watchers:
              27 Start watching this issue

                Created:
                Updated:
                Resolved: