Tomcat 8, как работает NIO - PullRequest
0 голосов
/ 01 мая 2018

Я хочу понять, как работает NIO в tomcat.

Я создаю приложение Spring Boot MVC со следующими свойствами в app.prop

server.tomcat.max-connections = 80
server.tomcat.max-threads= 70

При запуске приложения я видел живые темы: 51 с JVisualVM

Как я понимаю (из имен потоков) только 10 потоков относятся к пулу соединений Tomcat (они имеют имена, подобные http-nio-exec-1). Затем с помощью wrk я тестирую свое приложение с помощью

 wrk -t12 -c400 -d30s http://localhost:8080

(12 потоков и 400 соединений)

Теперь Tomcat создает 70 соединений http nio, а когда они не активны, Tomcat убивает 60 из них.

Мой вопрос:

1) Я начал изучать пакет NIO на Java и знаю, что сервер, созданный с помощью ServerSocketChanel, может обрабатывать 1000 запросов в секунду. Почему Tomcat просто создает столько потоков, сколько мы пишем в max-threads prop, и только потом использую концепцию NIO

2) Я не совсем понимаю, что такое server.tomcat.max-connections

Из документов: The maximum number of connections that the server will accept and process at any given time. When this number has been reached, the server will accept, but not process, one further connection.

Но во время тестирования я тоже открывал браузер и не дождался бесплатного подключения

(из wrk Я отправляю 400 подключений к серверу, но я также смог увидеть веб-страницу в браузере при открытии localhost: 8080)

...