During development the REST service (Spring Boot 1.1.18) all seems to went fine, but as we executed different performance and load test the service stopped to response with following error:
org.apache.tomcat.util.net.NioEndpoint log -
java.lang.NoClassDefFoundError: org/apache/tomcat/util/ExceptionUtils
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:711) ~[tomcat-embed-core-7.0.55.jar!/:7.0.55]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736) [tomcat-embed-core-7.0.55.jar!/:7.0.55]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1695) [tomcat-embed-core-7.0.55.jar!/:7.0.55]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-7.0.55.jar!/:7.0.55]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55]
The tests covers this workflow:
- 1) login
- 2) get information from database
- 3) parse information from a file (resided on the service host)
- step 2) and 3) are repeated 2000 times with 5 running threads
The service didn't crash totally, it is still reachable via JMX, but doesn't respond on HTTP - requests.
I'm searching for a reason, but with no luck.
UPDATE:
I added JAVA_OPTS for heap, stack tuning and permanent generation size and now the service is stable and performs much better.
-Xmx768m -Xms512m -Xss4m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m -XX:PermSize=128m
That's great, but why?
UPDATE:
Nothing help's, the error still remains, also with Sprint Boot 1.2.0