Как настроить Tomcat для использования более 1 процессора? - PullRequest
11 голосов
/ 17 сентября 2010

У нас появился новый клиент, и в настоящее время мы проводим стресс-тестирование на производственном сервере, таком как 100 одновременных потоков HTTP (с использованием Jmeter).Проблема в том, что, хотя у нас есть 2 процессора Xeon (каждый процессор с 4 ядрами, всего до 8 ядер), я вижу только tomcat, использующий 4 ядра, а не 8 ядер.4 ядра, я считаю, что он принадлежит только 1 процессору.остальные 4 потока практически спят.

У меня сложилось впечатление из документа Apache, что если у нас многопроцессорная машина, мы должны настроить acceptorThreadCount = "2": http://tomcat.apache.org/tomcat-6.0-doc/config/http.html

Мы имеемизмените соединитель по умолчанию на tomcatThreadPool с maxThreads = "150", minSpareThreads = "4" и исполнителем соединителя, чтобы параметр acceptorThreadCount = "2".Но он все еще использует 1 процессор.

Есть идеи, как настроить использование всех ядер (или всех процессоров)?

Ответы [ 2 ]

4 голосов
/ 19 октября 2010

Комментарий @JoseK вызывает все узкое место.наше приложение пишет слишком много журнала.В одном случае мы пытались уменьшить количество журналов в нашем файле журнала, и мы заметили, что общая производительность выше, а загрузка процессора выше.

Затем мы пытаемся с уровнем журнала log4k "WARN", и вау!приложение использует 70% всех процессорных ядер.

Мы должны проверить использование диска, прежде чем задавать вопрос.Спасибо!

4 голосов
/ 17 сентября 2010

Пара случайных мыслей, чтобы помочь вам.

JVM будет самостоятельно планировать задачи. Бывают случаи, когда JVM не считает, что один процессор перегружен, и может зарезервировать несколько ядер для критических операций. Поэтому вы видите, что некоторые ядра используются, а другие бездействуют.

Другая возможность состоит в том, что привязка к процессору должна быть явно установлена. В Unix вы можете проверить, какой процессор JVM был выбран для использования с командой taskset ::

taskset -p <pid>

В Windows откройте диспетчер задач, перейдите на вкладку процесса, щелкните правой кнопкой мыши по процессу и выберите установить Affinity. Вы можете видеть, какие ЦП / Ядра установлены для использования.

Мне неизвестен параметр запуска в Java / Tomcat для управления загрузкой процессора. Я считаю, что это должно быть на уровне ОС. Я также не помню, чтобы когда-либо читал о кодируемой JVM, чтобы ограничить количество используемых процессоров / ядер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...