Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-13349

High CPU usage in Solr due to Java 8 bug

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 7.7, 8.0, 9.0
    • 7.7.2, 8.1, 9.0
    • None
    • None

    Description

      We've had sporadic reports of high CPU usage in Solr 7. Lukas Weiss reported a Java 8 bug that appears to be the root cause (I have not personally verified), see: https://bugs.openjdk.java.net/browse/JDK-8129861 e-mail reproduced below:

      CommitTracker makes this call:

      Executors.newScheduledThreadPool(0, new DefaultSolrThreadFactory("commitScheduler"));

      The supposition is that calling this with 1 will fix this (untested)

      Ishan Chattopadhyaya This affects 6.6 and IIUC you're spinning a new version. We'll need to verify and include this fix.

      Adrien Grand You're right. I first thought "naaah, it wouldn't be that far back" but your question made me check, thanks!

      AFAICT, this is the only place in Solr/Lucene that uses zero.

      Using Java 9+ is another work-around.

      Anyone picking this up should port to 7.7 as well.

      e-mail from the user's list (many thanks to Lukas and Adam).

      Apologies, I can’t figure out how to reply to the Solr mailing list.
      I just ran across the same high CPU usage issue. I believe it’’s caused by
      this commit which was introduced in Solr 7.7.0
      https://github.com/apache/lucene-solr/commit/eb652b84edf441d8369f5188cdd5e3ae2b151434#diff-e54b251d166135a1afb7938cfe152bb5
      There is a bug in JDK versions <=8 where using 0 threads in the
      ScheduledThreadPool causes high CPU usage:
      https://bugs.openjdk.java.net/browse/JDK-8129861
      Oddly, the latest version
      of solr/core/src/java/org/apache/solr/update/CommitTracker.java on
      master still uses 0 executors as the default. Presumably most everyone is
      using JDK 9 or greater which has the bug fixed, so they don’t experience
      the bug.
      Feel free to relay this back to the mailing list.
      Thanks,
      Adam Guthrie

       

       

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            erickerickson Erick Erickson
            erickerickson Erick Erickson
            Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment