Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6356004

100% CPU utilisation in sun.net.www.http.KeepAliveStreamCleaner

XMLWordPrintable

    • b65
    • x86
    • windows_xp

      J2SE Version (please include all output from java -version flag):
        java version "1.6.0-beta"
        Java(TM) 2 Runtime Environment, Standard Edition (build 1.6.0-beta-b59)
        Java HotSpot(TM) Client VM (build 1.6.0-beta-b59, mixed mode, sharing)

      Does this problem occur on J2SE 1.4.x or 5.0.x ? Yes / No (pick one)
        Not sure - if pressed I could try and reproduce on an earlier version.

      Operating System Configuration Information (be specific):
        Windows XP SP2

      Hardware Configuration Information (be specific):
        1GB memory:
        processor: Intel Pentium 4 2.54GHz (not hyper-threaded)

      Bug Description:
        Everything has been running fine in my test environment. Yesterday I
        installed a Linksys WA354G router and now I keep getting an application
        lockup with 100% CPU utilisation. Our Azureus users have occassionally
        reported such problems (100% CPU use that is) and we've never been able
        to track it down. Recently (with JDK 1.5 help I added a monitor thread
        that measures thread CPU times to spot which thread is looping to cause the 100%
        problem. This has revealed the thread to be:

      [7:34:56] Thread state: elapsed = 10000, cpu = 14751, max = Keep-Alive-SocketCleaner (14735/147%)
      [7:34:56] java.io.BufferedInputStream.fill(Unknown Source),
      java.io.BufferedInputStream.skip(Unknown Source),
      sun.net.www.MeteredStream.skip(Unknown Source),
      sun.net.www.http.KeepAliveStreamCleaner.run(Unknown Source),
      java.lang.Thread.run(Unknown Source)
      [7:35:06] Thread state: elapsed = 10000, cpu = 9936, max =
      Keep-Alive-SocketCleaner (9921/99%)
      [7:35:12] java.io.BufferedInputStream.fill(Unknown Source),
      java.io.BufferedInputStream.skip(Unknown Source),
      sun.net.www.MeteredStream.skip(Unknown Source),
      sun.net.www.http.KeepAliveStreamCleaner.run(Unknown Source),
      java.lang.Thread.run(Unknown Source)

      Looking at the code it appears you are trying to skip a number of bytes:

      while (n < remainingToRead) {
          remainingToRead = remainingToRead - n;
          n = kas.skip(remainingToRead);
      }

      and that for whatever reason the "skip" method is returning less than
      expected. As this has only happened since I installed the new router, and we
      use http to configure the UPnP aspects of the router, I guess this is
      something specific to do with the linksys router's behaviour regarding
      keep-alive stuff.

            chegar Chris Hegarty
            tyao Ting-Yun Ingrid Yao (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: