Я использую 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 предложений, прежде чем продолжать получать все больше и больше ресурсов. Спасибо вам большое заблаговременно.
Да, JMeter - известный печатный ресурс. Определенно отключите все компоненты, которые накапливают данные по мере прохождения тестового сеанса. Дайте ему всю кучу, которую вы можете. –
Правильно ли изменить параметр HEAP и NEW в настройке jmeter.bat на 2/4/8g? –
Параметры 'NEW' выглядят как неправильные вещи.Если вы получаете OOME, это значит, что хранится много * старых * объектов, и эти параметры NEW изменяют JVM, чтобы рассматривать все как новые объекты. Это означает, что Minor GCs будут очень медленными. Лучше всего использовать динамическую динамику JVM для динамических поколений. –