I have a web application I am running on weblogic 10.3.5 .
I have created jmeter load tests to stress the server. No matter how I configure the load tests I cannot get weblogic to take more than about 25% of the cpu cycles. I have deployed the exact same web application on the same server but with glassfish 2.1.1 and glassfish will utilize much more of the CPU (up to 80%) as a result the load tests are more than twice as fast running on glassfish.
I am new to weblogic so I imagine there maybe some throttling I have not discovered or some tuning I need to apply...
The server is dual intel xeon (24 total cores) 32Gb ram. Also I have been running weblogic with the latest jrocket jvm.
Os is cent 6.4
Any advice would be greatly appreciated, as I am puzzled by this behavior.
maybe the problem is that WebLogic doesn+t have free threads to serve your requests.
you can try changing
in the setDomainEnv.sh shell script....
it's just a wild guess, don't shoot me if it's useless :o) ...
In alternative, you might define a workmanager to associate to your application.... I am just guessing, no clue what it going on there.
we should not use 100% CPU utilization but we can make till 70%-80% of CPU utilization.
I appreciate there are capacity planning details please check following document.
That was my initial thought as well. So I tried those things you suggested but with no success.
Also I tried crafting the tests as not to have high thread usage...
I created a test scenario where there are only ever 24 concurrent users, 1 per core was the idea, and it exhibits the same behavior. Never utilizing even 50% of the processor, while lagging in returning responses.
have you tried running the load generator from 2 (or more) different machines at the same time? Maybe you have a network bottleneck, or a CPU limitation on the injector, or maybe simply for some funny reason WebLogic has some DOS protecting against requests coming from the same IP (I don't think so, but you never know)...
Thank you for the suggestions.
My load generators run on 4 separate computers each of them are brand new beasts.
Maybe I can distribute the load over more computer... I will try that.
Also I have monitored the network which is 1Gb and traffic seems light.
I will direct connect the load generators and see if that makes a differences, although I am not confident it will.
at this point I would assume that the application in WebLogic suffers from some type of bottleneck - which is not CPU.
Run a profiling (if using JRockit, I would suggest JRMC with Latency analysis, otherwise yourkit) to identify where your requests are waiting - maybe some IO operation, or some lock....
It is NOT guaranteed that you are able to reach 100% CPU, some other constraints might kick in before
Applications with a fewer number of users tend to run faster on glassfish as glassfish does not provide the features that weblogic provides for the total administration of the application and the server. You can view the performance test here :
The low utilization of cpu means that your threads are hogging in some calls. You can check that through administrative console->server->monitoring->threads. You can take the thread dump and analyze the stack to get the clear view.
I just look into the WebLogic Support Matrix for 11g here http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html
CentOS is not listed here as a supported OS for WebLogic 11g. I would suggest to open a ticket with Oracle Tech support and follow up. Also if you have time and facility, try to install the supported operating system for the same WebLogic + Application setup and check if you encounter the same behaviour pattern.