I would like to thank you for spending your time on reading this article.
I have made the changes proposed and re-run the tests on JUnit
Results:
Scenario 1: a massive calls without setting maximum total connection value, the application stopped responding the requisitions. The response was 503 - Service Unavailable.
Scenario 2: calling /product directly, I got some "socket closed" returned from the application, before the socket closes the results is:
200 users / 10 ms - 6174 req/s
200 users / 100 ms - 1900 req/s
200 users / 200 ms - 965 req/s
200 users / 400 ms - 574 req/s
200 users / 800 ms - 243 req/s
1000 users / 10 ms - 6682 req/s
1000 users / 100 ms - 1963 req/s
1000 users / 200 ms - 987 req/s
1000 users / 400 ms - 554 req/s
1000 users / 800 ms - 223 req/s
2000 users / 10 ms - 1781 req/s
2000 users / 100 ms - 1899 req/s
2000 users / 200 ms - 935 req/s
2000 users / 400 ms - 454 req/s
2000 users / 800 ms - 240 req/s
Thank you.