Pizza eu
Pizza eu

Reputation: 1449

Understanding tomcat/spring boot multi threading

I've created a simple web application on the base of spring-boot. It gets request, do some block operations (like writing to the console numbers from 1 to 10_000) and returns simple response.
When I start to test it with JVisual VM I've noticed that threads work in a strange way.
In the beginning, with low load, they don't work at the same time, they work in turn:

load test 1

If I try to high-load application than Tomcat creates new Threads (It's OK as I understand) and after time threads work at the same time:

load test 2


I've used Netling app to test application. It just simple request on localhost, nothing special.
Could you please explain why it works in this way? Or provide some links with description.
Thanks in advance!

Upvotes: 4

Views: 1900

Answers (1)

Pizza eu
Pizza eu

Reputation: 1449

I've understood the root of the issue.
On the JVisualVM I saw, that all Threads was blocked by each other, but I didn't know why. Now it's clear - I've use system.out.println() as a block operation, but Threads can't use it at the same time, the console is locked.
I've change console output to file output (use thread name as a filename to prevent lock) and start the application again. Now it's work as expected.

Stupid mistake, but I hope it will be useful for someone :)

enter image description here

Upvotes: 4

Related Questions