Мой сервер слишком слаб для выполнения простого плана тестирования JMeter со 150 одновременными пользователями?

Я пытаюсь создать нагрузочный тест с помощью JMeter. У меня есть довольно простой план тестирования, который:

  • Содержит все стандартные HTTP Cookie Manager, Cache Manager и т. Д.
  • Содержит конфигурацию набора данных CSV с одним миллионом действительных имен пользователей.
  • Он получает доступ к странице входа и фиксирует имя пользователя для авторизации.
  • Затем он обращается к странице, которая выполняет некоторые запросы к базе данных, и
    отображает результат.

Я могу успешно запустить его с 80 одновременными пользователями и временем нарастания 30 секунд. Если я перейду выше, все начнет закипать. В большинстве случаев тест просто зависает, и мне в конечном итоге приходится отменять его с помощью Ctrl + C. Если я потом посмотрю в журналы, я не получу никаких ошибок, просто похоже, что я прервал тест в середине. Я также пробовал запустить свой тестовый план в Taurus, но он тоже зависает, и если я потом посмотрю в журналы, ошибок нет.

Я выполнил большую часть того, что указано в этом руководстве 9 простых решений для сбоя« Недостаточно памяти »при нагрузочном тесте JMeter, но в любом случае просто чтобы прояснить некоторые вещи:

  • Я не запускаю свои тесты в графическом интерфейсе.
  • В плане тестирования у меня нет слушателей.
  • Я увеличил размер кучи Java до 28 ГБ.
  • Я получаю встроенные ресурсы, но только из домена.
  • Среда, в которой размещается веб-страница, должна легко обрабатывать более 150 пользователей.

Сервер, который я использую, представляет собой довольно слабую виртуальную машину. Когда я запускаю тест и смотрю "вверху", средняя нагрузка составляет 20-30, что явно слишком много, учитывая, что у сервера 4 ядра. Но когда я смотрю в Интернете, кажется, что люди легко запускают тесты с 3-500 одновременными пользователями на обычных ноутбуках, поэтому я все еще подозреваю, что есть какая-то другая ошибка.

Характеристики сервера:

  • Виртуальная машина под управлением Oracle Linux Server 7.5
  • 4 ядра Intel Xeon E5-2650 v3 @ 2,3 ГГц
  • 32 ГБ RAM

Есть ли что-то очевидное, что мне не хватает, или мой сервер просто слишком слаб? `

Заранее спасибо! С наилучшими пожеланиями


person VPersson    schedule 27.11.2018    source источник


Ответы (1)


  1. Ваш параметр кучи может быть слишком высоким для вашей настройки, вы сможете без проблем имитировать 150 одновременных пользователей, используя пару гигабайт кучи. Возможно, ваша операционная система выполняет огромную подкачку что вызывает высокий дисковый ввод-вывод.

  2. Другая причина заключается в том, что JMeter ожидает ответа перед отправкой следующего запроса, и если у вас нет разумных тайм-аутов и сервер не отвечает, ваш тест никогда не закончится. Поэтому подумайте о том, чтобы ввести время ожидания подключения и ответа, лучший способ - использовать Параметры HTTP-запроса по умолчанию, таким образом вы можете установить тайм-ауты в одном месте, и они будут распространяться на все Сэмплеры HTTP-запроса

    введите здесь описание изображения

  3. Подумайте о настройке мониторинга вашего сервера, так как ему может просто не хватать ЦП или ОЗУ, поэтому он не будет отвечать. Вы можете использовать плагин JMeter PerfMon или SSHMon Samples Collector для этого

  4. Проверьте свое приложение в тестовой инфраструктуре и компонентах промежуточного программного обеспечения (приложение / веб-сервер, база данных, балансировщики нагрузки, обратные прокси-серверы и т. Д.). Эти ребята должны быть настроены на высокие нагрузки, поскольку их конфигурация по умолчанию хороша для разработки / отладки, но не для нагрузочного тестирования / производства.

  5. Рассмотрите возможность повторного запуска теста с помощью инструмента профилирования или APM Tool, прикрепленный к вашему приложению - таким образом вы сможете определить, что является узким местом, т. е. какой компонент замедляет вся система не работает.

person Dmitri T    schedule 27.11.2018
comment
Большое спасибо за этот ответ! Оказалось, что мне не хватало тайм-аутов, теперь он отлично работает, запустив тест для 200 одновременных пользователей. Однако я все еще не могу заставить его работать с использованием фреймворка Taurus. Если я запустил тот же самый файл jmx с помощью команды bzt, он в конечном итоге зависнет. Если я посмотрю вверху, я вижу, что java-процесс для JMeter на мгновение выполняется с загрузкой 3-400%, а затем завершается. После этого процесс bzt застревает ровно при 100% загрузке и застревает там, пока я не нажму Ctrl + C. У вас есть какие-нибудь догадки о том, что вызывает это? - person VPersson; 27.11.2018