JSON Extractor - извлечение данных - не может быть применено к примитиву - PullRequest
1 голос
/ 08 октября 2019

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

Имя созданных переменных:

schoolId; 
teacherAccountId; 
teacherProfileId; 
teacherUserName; 
schoolLogoId;

Выражения JSON Path:

$.[?(@.type == 'SCHOOL')].id; 
$.[?(@.type == 'SCHOOL')].accountId; 
$.[?(@.type == 'SCHOOL')].profileId; 
$.[?(@.type == 'SCHOOL')].username; 
$.[?(@.type == 'SCHOOL')].icon.id;

При выполнении 800 пользовательских потоков выдает следующую ошибку со стороны клиента.

Будет запущен цикл для всех назначенных переменных (teacherProfileId; teacherUserName; schoolLogoId;)

затем после выдает ошибку со стороны сервера - java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid23134.hprof ...

Что я могу сделать для этого? Что-то не так с конфигурациями экстрактора JSON?

Примечание. Я уже увеличил размер кучи JVM до 4G

 Error processing JSON content in JSON Extractor -Extract user data from user context, message: Filter: [?]['teacherAccountId'] can not be applied to primitives. Current context is: org.apache.http.conn.ConnectTimeoutException: connect timed out
        at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
        at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$JMeterDefaultHttpClientConnectionOperator.connect(HTTPHC4Impl.java:336)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374)

....

1 Ответ

1 голос
/ 08 октября 2019

Вы не получите никакого действительного JSON в качестве ответа и просмотрите время ожидания соединения

по адресу org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect`

похоже, ваше приложение перегружено, следовательно, вы не получаете правильный ответ.

Нет никакого отношения к сценарию JMeter, вам нужно сообщить об ошибке производительности. Если позволяет время, вы можете улучшить свой отчет, чтобы он содержал:

  1. Максимальное количество пользователей, которые могут получить доступ к приложению без каких-либо проблем (рассмотрите возможность использования разумного периода наращивания , чтобына борту этих 800 пользователей постепенно )
  2. Точка насыщения - чтобы узнать, какая была максимальная пропускная способность и сколько пользователей было на этом этапе (вы можете проверить это, используят. е. Hits/s vs Active Threads слушатель
  3. Достаточно ли у приложения достаточного запаса для работы с точки зрения процессора, памяти и т. д., поскольку ошибка может быть вызвана нехваткой необходимых ресурсов. Вы можете проверить этоиспользование JMeter PerfMon Plugin
  4. Проверка журналов приложений на наличие подозрительных записей
  5. Восстановление приложения при снижении нагрузки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...