2015-02-24 2 views
6

Я использую Jmeter для загрузки рабочей нагрузки в приложение, развернутое на экземпляре AWS EC2. Тест должен быть очень большим: он длится 10 часов, а профиль рабочей нагрузки имеет бимодальные формы с шагом около 2600 запросов за 5 минут. На самом деле у меня есть один экземпляр m3.xlarge, в котором развертывается приложение, и 8 экземпляров m3.xlarge, каждый из которых запускает экземпляр jmeter. С помощью сценария python рабочая нагрузка для инъекции разделяется между 8 экземплярами клиента, поэтому в примере, если исходная рабочая нагрузка для ввода 800 запросов, каждый экземпляр jmeter будет вводить 100 запросов. Полный тест, как я сказал, длится 10 часов и делится на временные интервалы по 5 минут каждый. Каждые 5 минут применяется небольшое изменение рабочей нагрузки. Фактически я получаю из каждого экземпляра jmeter значение java.lang.OutOfMemoryError: верхний предел GC превысил ошибку сразу после запуска теста, и запрос не поступает в приложение. Я много читал в Интернете и на StackOverflow, и я заключил возможная ошибка может быть:Jmeter java.lang.OutOfMemoryError: превышен верхний предел GC

  • JMV размер кучи слишком низко> Я решил установив следующее в jmeter.bat файлов в каждом случае JMeter:

    набор КУЧА = -Xms4g -Xmx4g

    комплект NEW = -XX: NewSize = 4g -XX: MaxNewSize = 4g

  • некоторые ошибки в коде, что приводит к прежнему неудобный использования сборщика мусора. Поэтому я удаляю из своего теста всех слушателей jmeter. В частности, я использовал TableVisualizer, ViewResultsFullVisualizer, StatVisualizer и GraphVisualizer.

В любом случае проблема сохраняется. Я действительно не знаю, как его решить. Я знаю, что 10 часов теста с запросом на подачу 2600 может быть очень тяжелым испытанием, но я думаю, что должен быть способ выполнить это. Я использую экземпляр EC2 m3.xlarge, поэтому я мог бы даже увеличить размер кучи до 8G, если это может быть полезно, или разделить рабочую нагрузку среди еще большего числа клиентов, поскольку я использую спотовые экземпляры, поэтому я не буду платить гораздо больше, но так как я уже удвоил количество экземпляров клиента с 4 до 8, чтобы решить проблему, и не работает. Я немного смущен, и я хочу знать r предложений, прежде чем продолжать получать все больше и больше ресурсов. Спасибо вам большое заблаговременно.

+0

Да, JMeter - известный печатный ресурс. Определенно отключите все компоненты, которые накапливают данные по мере прохождения тестового сеанса. Дайте ему всю кучу, которую вы можете. –

+0

Правильно ли изменить параметр HEAP и NEW в настройке jmeter.bat на 2/4/8g? –

+0

Параметры 'NEW' выглядят как неправильные вещи.Если вы получаете OOME, это значит, что хранится много * старых * объектов, и эти параметры NEW изменяют JVM, чтобы рассматривать все как новые объекты. Это означает, что Minor GCs будут очень медленными. Лучше всего использовать динамическую динамику JVM для динамических поколений. –

ответ

5

Ваши настройки кучи выглядят неправильно: набор КУЧА = -Xms4g -Xmx4g набор NEW = -XX: NewSize = 4g -XX: MaxNewSize = 4g

Ваш новый равен размеру кучи, это неправильно. Сначала добавьте комментарий.

Можете ли вы сделать ps -eaf | grep java и показать результат?

А также проверить вас соблюдать эти рекомендации:

Наконец, показать обзор вашего плана тестирования и, количество потоков, которые вы начинаете.

Смежные вопросы