Назад | Перейти на главную страницу

Linux: несоответствие между потоками, созданными приложением tomcat, и длиной очереди выполнения

Linux: 16 ГБ оперативной памяти, 2 процессора

На машине Linux, на которой запущен tomcat с примерно 800 потоками, которые я получил с помощью jvisualVM, но при длине очереди выполнения я получаю только 50, потому что процессор составляет 100%, и заблокированные потоки не отображаются. Получил эти значения через NMON.

Итак, у меня есть следующие вопросы:

  1. Согласно моему пониманию, для каждого потока Java будет создан один поток ядра, если это так, почему я не получаю длину очереди выполнения 800, а также Нет заблокированных потоков.

2. Значит, это означает, что только 50 потоков ждут запуска, остальные потоки находятся в рабочем состоянии, возможно ли, что 750 потоков работают одновременно?

проясните мне эту путаницу, я googledd везде по этому поводу также не понял. ссылки очень ценные

С этими настройками, предполагая, что вы используете соединитель BIO (1 поток на соединение) и среднее время отклика 50 миллисекунд (так что каждый поток может давать 20 ответов в секунду), вы должны иметь возможность обрабатывать:

(20 ответов / сек * 800 потоков) + 200 (количество приемов) + net.ipv4.tcp_max_syn_backlog (стек TCP) соединений в секунду.

Но что касается вашего комментария, вас интересует размер HW. На этом этапе, если у вас есть возможность провести другие тесты, поскольку ваш процессор был загружен на 100%, попробуйте повторить тест с половинной нагрузкой. Повторите увеличение / уменьшение нагрузки, пока не достигнете 100% ЦП со средней нагрузкой = количеству ядер. Теперь у вас есть максимальная нагрузка, с которой вы можете справиться с реальным оборудованием. Зная это и ожидаемую нагрузку, теперь вы можете узнать, сколько еще процессора вам нужно.

Надеюсь это поможет.