I have been driven crazy for the past 2 weeks performing load tests for the Single Sign-On infrastructure in a local ministry.
Today, one of the customized application threw the following error:
java.lang.OutOfMemoryError: unable to create new native thread
While searching for a solution, I came across the following diagram. I think it's good to share as it's very clear in illustrating how to tune a 32-bit JVM.
I had set the request processing thread (thread-count) to a high number of 500. (Ya! I was crazy to do that) At the same time, I set the Xmx and Xms to 2GB.
So the math was rather bad (if you can follow the diagram above). Ha!
In the end, we settled for Xmx and Xms to 512MB with thread-count being 200. The application flies!