2 Replies Latest reply on Jun 17, 2013 2:54 PM by ctomc

    jboss seems limited to 1.5 cpu regardless


      Our users can load up jboss with a few mouse clicks. When they do, it seems that the web UI response is severely affected, to the point that other operations that usually take milliseconds now take many minutes. While this might be expected, we would also expect a heavy load on cpu and memory. This does not seem to be the case. On our 8 cpu  (VM) machine, the total load on java seems to average out at 15% of total cpu power. Reviewing the threads via process explorer, a lot of them seem to have small fractions of cpu cyles. We've also reviewed the GC log. While we have given jboss 16Gb ram, it seems to use about 12Gb of it.


      We thought that the thread pool size might need adjusting, so we adjusted it upwards, but all that seemed to happen is one cpu seemed to be managing a lot of processes instead of having the processes spread out over the full 8 cpu. Still the ceiling of around 15% of total cpu seemed to apply.


      Why should our cpu cycles seem to limit at 1.5 cpu regardless? What are we missing?



      Some parameters are:

      Vm arguments

      -XX:+TieredCompilation -Dprogram.name=standalone.bat -Xms16384m -Xmx16384m -XX:MaxPermSize=256m -Xss1024k -XX:-UseParallelOldGC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -Djava.io.tmpdir=E:\app\temp\java -XX:+UseCompressedOops -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:E:\app\server\logs\GC.log -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Dorg.jboss.boot.log.file=E:\app\Server\jboss\server\standalone\log\server.log -Dlogging.configuration=file:E:\app\Server\jboss\server\standalone/configuration/logging.properties


      System config

      Windows Server 2008 R2 x64

      24Gb Ram, 8 core


      Database is mysql 5.5.30

      Java is 1.7.0_15

      jboss eap 6.1.0

        • 1. Re: jboss seems limited to 1.5 cpu regardless

          This generally means that you are I/O bound somewhere.


          In your case, it's possible that you have not set the database connection pool to a high enough value, so your application is blocking waiting for database connections to become available.


          It's also possible that your application code is doing something that tries to load a significant chunk of the database into memory, perhaps because it's suffering from some form of the "N + 1 SELECT" problem (in my experience one of the top causes of performance problems in enterprise applications).

          • 2. Re: jboss seems limited to 1.5 cpu regardless



            can you post thread dump of your running server, so we can see where threads are spending their time.

            Without that info it is hard to tell why it is not consuming whole cpu power. Probably it is waitng for some IO resource as Stephen pointed out.