Uploaded image for project: 'WildFly Core'
  1. WildFly Core
  2. WFCORE-1093

TempFileProviderService threads consume high CPU

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 2.0.3.Final
    • None
    • Server
    • None

    Description

      TempFileProviderService threads consume high CPU as they poll their non empty task queue. This is ultimately due to a flaw in the JDK ThreadPoolExecutor code (https://bugs.openjdk.java.net/browse/JDK-8129861), impacting ScheduledThreadPoolExecutors that use a core size of 0 and a default 0 keepalive timeout.

      While the executor queue is not empty, the executor does not allow the pool to go below 1 thread. So the one remaining work thread keeps looping over its poll call with a 0 timeout. Options to protect JBoss from this are:

      1) Set a keepalive timeout on the executor so the poll has a duration and the worker run loop isn't so busy
      2) Or set the Executor core pool size to >0. The worker thread would then use a blocking take() call on its queue instead of a constant 0 second poll calls. The side effect of this change is that the thread pool wouldn't ever drop back down to 0.

      Attachments

        Activity

          People

            jgreene@redhat.com Jason Greene
            rhn-support-aogburn Aaron Ogburn
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: