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

Viewing an idle browser tab on a Jira dashboard can cause many simultaneous requests leading to high CPU or OOME

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Medium
    • None
    • 9.4.0, 9.4.15, 9.12.6
    • Dashboard & Gadgets
    • None

    Description

      Issue Summary

      Some gadgets that can be placed on a Dashboard have a checkbox that allows the gadget to be automatically refreshed every 15 minutes, such as:

      • Two Dimensional Filter Statistics gadget
      • Filter Results gadget

      This feature is useful when users wish to leave a Dashboard up for extended viewing, without the need to periodically reload the page.

      However, if such a Dashboard is tabbed away from in the current browser window, the gadgets will not refresh every 15 minutes. Instead, they will act as though they were queued up. When the tab is later viewed after some delay (>15 minutes), each gadget refresh that would have happened will simultaneously send a request to the Jira server, causing behaviors including:

      • High HTTP thread usage
      • High server CPU
      • High server heap memory usage, possible OOMEs
      • High database usage

      The longer the delay, the greater the volume of simultaneous redundant requests will be, and the greater the performance impact will be.

      This has been reproduced on the following browsers:

      • Arc 1.36.0
      • Chrome 124.0.6367.60
      • Firefox 125.0.1
      • Safari 17.4.1

      This is reproducible on Data Center:

      Steps to Reproduce

      1. Create a new Jira dashboard.
      2. Add at least one Filter Results or Two Dimensional Filter Statistics gadgets to the page with any filter. More gadgets will increase the impact and visibility of the issue. Ensure that the Auto Refresh checkbox is ticked.
      3. For visibility, open the Developer Tools for your browser, and leave the Network view open on your tab.
      4. Refresh the page to observe the Dashboard and it's gadgets.
      5. Tab away from this window for at least 15 minutes. Delaying longer will cause a greater impact and make the behavior more obvious.
      6. Return to this tab

      Expected Results

      The gadgets on the dashboard load no more than once each.

      Actual Results

      The gadgets will load repeatedly and simultaneously, corresponding to roughly one request per gadget per 15 minutes delayed.

      The following come from a Dashboard that contained 4 Two Dimensional Filter Statsistics gadgets, idled for approximately one hour:

      Developer Tools:

      Access Logs:

      0:0:0:0:0:0:0:1 967x712x6 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10005&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447746 HTTP/1.1" 200 322 234 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x709x3 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10005&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447743 HTTP/1.1" 200 322 243 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x711x5 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10005&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447745 HTTP/1.1" 200 322 245 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x707x1 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10003&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447741 HTTP/1.1" 200 322 247 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x713x6 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10006&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447747 HTTP/1.1" 200 323 13 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x714x5 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10006&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447749 HTTP/1.1" 200 323 11 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x710x4 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10004&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447744 HTTP/1.1" 200 323 260 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x708x2 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10006&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447742 HTTP/1.1" 200 323 261 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x716x5 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10003&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447750 HTTP/1.1" 200 322 10 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x715x4 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10003&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447748 HTTP/1.1" 200 322 16 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x718x4 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10004&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447752 HTTP/1.1" 200 323 9 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x720x4 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10006&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447755 HTTP/1.1" 200 323 9 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x717x5 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10004&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447751 HTTP/1.1" 200 323 21 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x719x5 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10004&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447753 HTTP/1.1" 200 323 16 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x722x5 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10003&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447756 HTTP/1.1" 200 322 7 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"
      0:0:0:0:0:0:0:1 967x721x4 kliou [21/Apr/2024:16:07:36 -0500] "GET /rest/gadget/1.0/twodimensionalfilterstats/generate?filterId=filter-10005&xstattype=assignees&ystattype=assignees&sortDirection=asc&sortBy=natural&numberToShow=5&_=1713728447754 HTTP/1.1" 200 322 17 "http://localhost:8080/secure/Dashboard.jspa?selectPageId=10100" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" "1k28y0d"

      16 requests, made of 4 redundant reloads of the same 4 gadgets, corresponds roughly to the timeline of ~1 hour / 15 minutes passed.

      Workaround

      Avoid leaving Dashboards open to avoid inadvertently causing this behavior
      Avoid enabling the Auto Refresh feature of these gadgets.

      Attachments

        Activity

          People

            Unassigned Unassigned
            kliou Kevin Liou
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: