Подтвердить что ты не робот

Tomcat Java NIO с параллельными медленными соединениями TCP-клиента

Мой нестандартный

Без NIO:
Для каждого сервера соединений keepAlive продолжают блокировать поток.

С NIO:
Этот соединитель имеет пару потоков poller, используемых для поддержания соединения для всех подключенных пользователей, в то время как рабочие потоки вызываются всякий раз, когда доступны данные (новый HTTP-запрос)

Сейчас: Если у меня есть простой сервлет, который возвращает строку 100 КБ клиенту (браузеру).

....
String HunderdKBString = "reallylongstring"
PrintWriter out = response.getWriter();
out.println(HunderdKBString);
....

Если клиент с подключением 1 KB подключается, для получения строки потребуется около 100 секунд.
Так ли это, что поток java будет заблокирован около 100 секунд?

Как буфер TCP, Java OutputStream или Writer или другие буферы влияют на время потока потока?

PS: использование apache-tomcat-8.0.24 в centos 7 с оракулом JDK 1.7.

EDIT: Как упоминалось, поток блокируется, и буфер может уменьшить время блокировки потока. Как оптимизировать tomcat/OS для сокращения времени блока потока с помощью этого буфера?

Как можно обнаружить в рабочей среде, если tomcat голодает из-за потока из-за того, что к нему подключен много клиентов медленного соединения?

4b9b3361

Ответ 1

Так ли это, что поток java будет заблокирован около 100 секунд?

Да.

Как буфер TCP, Java OutputStream или Writer или другие буферы влияют на время потока потока?

Если буфер достаточно велик для хранения отправленных данных, поток отправки не будет блокироваться.