Я использую LoadRunner для стресс-тестирования приложения J2EE.
У меня есть: 1 сервер БД MySQL и 1 сервер приложений JBoss. Каждый представляет собой 16-ядерный (1,8 ГГц) / 8 ГБ оперативной памяти.
Пул соединений: сервер БД использует max_connections = 100
в my.cnf
. Сервер приложений также использует min-pool-size
и max-pool-size
= 100 в mysql-ds.xml
и mysql-ro-ds.xml
.
Я моделирую загрузку 100 виртуальных пользователей с «обычного» одноядерного ПК. Это блок оперативной памяти 1,8 ГГц / 1 ГБ.
Приложение развернуто и используется в локальной сети Ethernet со скоростью 100 Мбит/с.
Я использую точки встречи в разделах своего сценария стресс-тестирования, чтобы имитировать параллельное (а не не параллельное) использование в реальном мире.
Вопрос:
Использование ЦП на этом генерирующем нагрузку ПК никогда не достигает 100%, и память, как я полагаю, также доступна. Итак, я мог бы попробовать добавить больше виртуальных пользователей на этот компьютер. Но прежде чем я это сделаю, я хотел бы узнать 1 или 2 основы о параллелизме/параллелизме и оборудовании:
Имея такой генератор нагрузки только с одним ядром, могу ли я действительно смоделировать параллельную нагрузку 100 пользователей (при этом каждый пользователь в реальной жизни использует выделенный ПК)? Мое возможно неверное понимание заключается в том, что 100 потоков на одноядерном ПК будут выполняться одновременно (то есть с чередованием), но не параллельно... Это означает, что я не могу реально смоделировать реальную нагрузку 100 параллельных пользователей (на 100 ПК) всего с одного одноядерного ПК! Это правильно?
Ограничения пропускной способности сети для пользовательского параллелизма: даже если предположить, что у меня есть 100-ядерный ПК, генерирующий нагрузку (или, альтернативно, скажем, у меня есть 100 одноядерных ПК, сидящих в моей локальной сети), не будет ли то, как работает Ethernet, допускает только параллелизм и непараллелизм пользователей по проводу ethernet, соединяющему нагружающий ПК с сервером. На самом деле, кажется, что эта проблема (отсутствие пользовательского параллелизма) будет сохраняться даже при реальном использовании приложения (с 1 ПК на пользователя), поскольку пользовательские запросы, достигающие сервера приложений на многоядерном компьютере, могут поступать только с чередованием. . То есть единственный случай, когда многоядерный сервер мог бы обрабатывать пользовательские запросы параллельно, был бы в том случае, если бы у каждого пользователя было собственное выделенное соединение физического уровня между ним и сервером!!
Предполагая, что параллелизм недостижим (из-за вышеупомянутых «проблем») и возможна только следующая лучшая вещь, называемая параллелизмом, как мне выбрать аппаратное обеспечение и спецификацию сети для использования моей симуляции. Например, (а) Насколько мощными должны быть мои ПК, генерирующие нагрузку? (b) Сколько виртуальных пользователей создать на каждом из этих ПК? (c) Должен ли каждый ПК в локальной сети подключаться к серверу через коммутатор (во избежание) широковещательного трафика, который возник бы, если бы вместо коммутатора использовался концентратор?
Заранее спасибо,
/HS