Java.lang.StackOverflowError из-за regex.Perl5Matcher - PullRequest
0 голосов
/ 03 сентября 2018

Эта проблема воспроизводима при запуске теста JMeter на определенной машине. Количество пользователей - 1. Тест JMeter использует регулярные выражения для исключения определенных доменов ^((?!somerealdomain\.com).)*$. Поток закрывается практически сразу, а ошибка в журнале jmeter:

2018-09-03 15:53:12,596 ERROR o.a.j.JMeter: Uncaught exception: 
java.lang.StackOverflowError: null
    at org.apache.oro.text.regex.Perl5Matcher.__match(Unknown Source) ~[oro-2.0.8.jar:?]
    at org.apache.oro.text.regex.Perl5Matcher.__match(Unknown Source) ~[oro-2.0.8.jar:?]
    at org.apache.oro.text.regex.Perl5Matcher.__match(Unknown Source) ~[oro-2.0.8.jar:?]

Ошибка Perl5Matcher присутствует примерно 1000 раз. Так как проблема воспроизводима только на одном из 3 наших агентов производительности, я не уверен, что является причиной этого. Куча составляет 1 ГБ на всех машинах:

HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m

Java-версия - это 1.8.0_181 и все три агента.

У вас есть идеи, где искать?

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

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

  1. Дважды проверьте, что ваши генераторы нагрузки работают на одной и той же ОС
  2. Дважды проверьте, что ваши генераторы нагрузки используют одну и ту же версию JVM (предпочтительно от Oracle, предпочтительно сервер JRE или JDK), поставщика, архитектуру, сборку и т. Д.
  3. Дважды проверьте, что ваши генераторы нагрузки используют одинаковую (предпочтительно последнюю ) версию JMeter
  4. Дважды проверьте, что ваши генераторы нагрузки имеют одинаковую конфигурацию, лучше всего настроить один узел в соответствии с JMeter Best Practices и скопировать установку на все подчиненные машины
  5. Сохраните данные ответа для сбойного запроса и убедитесь, что они одинаковы для всех ведомых устройств. Это можно сделать, добавив следующие 2 строки в user.properties файл :

    jmeter.save.saveservice.output_format=xml
    meter.save.saveservice.response_data=true
    
  6. Попробуйте изменить свое регулярное выражение, чтобы исключить домен, например:

    • ^((?!somerealdomain).)*$

      или

    • ^((?!somerealdomain.com).)*$

0 голосов
/ 04 сентября 2018

Я нашел решение. Я добавил в начало ПУТИ C: \ Program Files \ Java \ jre1.8.0_181 \ bin; и затем перезагрузил компьютер как объяснено здесь .

Что привело меня к этому, так это то, что после того, как я установил последнюю 64-битную версию Java JRE и запустил java -version, сообщение было "Java is not recognized as an internal or external command". Было странно, что тест JMeter даже начал выполнение на этой машине.

Не было необходимости делать это на двух других агентах. Спасибо всем за ваши добрые предложения.

0 голосов
/ 04 сентября 2018

Попробуйте настройки Xss везде одинаковые:

-Xss256k

Также, пожалуйста, покажите все jmeter.log:

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