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

JIRA becomes unresponsive because of growing recency queue in frequently used projectRoleActors cache.

XMLWordPrintable

      Summary

      ProjectRoleActors cache uses expireAfterAccess setting. This means that internal guava cache implementation will maintain recency queue with elements for each read of this cache. This leads to performance problem at large instances as frequently accessed caches might generate more entries to recency queue that can be processed by the system.

      Environment

      • Large standalone JIRA instance:
        • 1M issues
        • 1k projects
        • 20k+ users and different permission settings for projects

      Steps to Reproduce

      Generate high load on a page that does a lot of project role actors checks either Browse Projects, Browse Boards or a board with issues from different projects (at least 1000 projects).

      Expected Results

      The load on the cache does not affect Jira performance.

      Actual Results

      JIRA very slow and doesn't respond. High number of concurrent running threads, very high load average (100+), incoming http threads busy processing recency queue.

      Notes

      Thread dump will show large number of threads in this code: Cache - com.google.common.cache.LocalCache.get

       42.79% \ at com.google.common.cache.LocalCache.get
       42.11%  \ at com.google.common.cache.LocalCache$Segment.get
       41.88%   \ at com.google.common.cache.LocalCache$Segment.recordRead
       41.88%    \ at java.util.concurrent.ConcurrentLinkedQueue.add
       41.88%     V at java.util.concurrent.ConcurrentLinkedQueue.offer
      

      Workaround

      None known.

              Unassigned Unassigned
              spawlak Sebastian Pawlak (Inactive)
              Votes:
              2 Vote for this issue
              Watchers:
              7 Start watching this issue

                Created:
                Updated:
                Resolved: