проблема нескольких пользователей jmeter - PullRequest
1 голос
/ 08 января 2010

Мы используем Jmeter для тестирования нашего приложения Php, работающего на веб-сервере Apache 2. Я могу загрузить Jmeter для использования 25 или 50 потоков, и нагрузка на сервер не увеличивается, однако время отклика от сервера увеличивается. Чем больше потоков, тем медленнее время отклика. Похоже, Jmeter или Apache ставят запросы в очередь. Я изменил значение maxclients в файле конфигурации веб-сервера apache, но это не меняет проблему. Пока работает Jmeter, я могу использовать приложение и получать реальное время отклика. Что дает? Я ожидаю, что смогу обложить налогом мой сервер до 0% простоя за счет увеличения количества потоков. Может ли кто-нибудь помочь направить меня в правильном направлении?

Обновление: я обнаружил, что если я удаляю сеансы из своего приложения, я могу имитировать полную нагрузку на сервер. Я попытался повторно включить сеансы и использовать HTTP Cookie Manager для каждого потока, но это, похоже, не оказывает влияния.

Ответы [ 3 ]

3 голосов
/ 10 января 2010

Вам необходимо определить, где возникает узкое место, а затем попытаться устранить проблему.

  • Клиент JMeter должен работать на хорошо оборудованной машине. Я предпочитаю сервер Solaris / Unix, на котором работает JVM, но для потоков <200 современный Windows-компьютер подойдет просто отлично. JMeter может стать узким местом, и вы не получите значимых результатов, как только это произойдет. Кроме того, он должен работать на отдельной машине, на которой проводится тестирование, и предпочтительно в той же сети. Задержка глобальной сети может стать проблемой, если ваш тестовый сервер и сервер находятся далеко друг от друга. </li>
  • Второе, что нужно проверить, это ваши работники Apache. В Apache есть модуль mod_status, который покажет вам состояние каждого работника. Возможно, размер пула будет слишком низким. Из mod_status вы сможете увидеть, сколько рабочих используется. Для немногих, и у Apache не будет рабочих для обработки запросов, и запросы будут стоять в очереди. Слишком много, и Apache может исчерпать память на коробке, на которой он работает.
  • Далее вы должны проверить свою базу данных. Если он находится на отдельной машине, база данных может иметь недостаток ввода-вывода или ЦП.
  • Если вы попали в узкое место, а сервер и БД находятся на одной машине, вы, как правило, достигнете предела ЦП, ОЗУ или ввода-вывода. Я перечислил их в том порядке, в котором их легче всего идентифицировать. Если вы получаете приложение с привязкой к процессору, вы можете легко увидеть, что загрузка вашего процессора достигает 100%. Если у вас не хватает оперативной памяти, ваша машина начнет обмениваться. Как на Windows, так и на Unix довольно легко увидеть доступную свободную оперативную память. Наконец, вы можете быть связаны с IO. Это тоже можно отслеживать с помощью различных инструментов или статистики, но это не так очевидно, как ЦП.

Наконец, конкретно к вашему вопросу, единственное, что выделяется, это то, что можно хранить огромное количество файлов сеансов в одном каталоге. Часто PHP хранит информацию о сеансе в файлах. Если этот каталог становится большим, PHP будет все больше и больше времени находить сеанс. Если вы запустили свой тест, если куки отключены, приложение PHP могло создавать тысячи файлов сеансов для каждого запроса пользователя. На Windows-сервере он будет работать медленнее, чем на Unix-сервере, из-за различий в способах хранения каталогов в двух операционных системах.

2 голосов
/ 21 мая 2010

Используете ли вы таймер с постоянной пропускной способностью? Если Jmeter не может обслуживать пропускную способность с выделенными для него потоками, вы увидите эти очереди и выбросы во время ответа. Чтобы выяснить, в этом ли проблема, попробуйте добавить больше потоков.

Я также нашел сообщение об этом, когда в скрипте есть вызовы javascript. В этом случае попробуйте переместить вызовы javascript в элемент плана тестирования в верхней части скрипта или найдите способы предварительного вычисления значения.

0 голосов
/ 10 января 2010

Попробуйте проверить статический файл, обслуживаемый apache, а не PHP, чтобы увидеть, связана ли проблема с конфигурацией Apache или конфигурацией PHP.

Также проверьте сетевые подключения и конфигурацию. Наше тестирование JMeter продвигалось хорошо, пока не достигло стены. В конце концов понял, что у нас было только 100-мегабайтное соединение, и оно было насыщенным, собираясь исправить гигабит. Возможно, ваши сетевые карты или коммутатор работают с меньшей скоростью, чем вы думаете, особенно если для них задана скорость «Авто».

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