NotSerializableException: RemoteThreadsListenerTestElement с JMeter 5 на JDK 8

Я запускаю JMeter 5.0 с OpenJDK8, но при попытке запустить его в режиме Master-Slave возникает ошибка. Ведомый запускается с использованием

./jmeter-server -Djava.rmi.server.hostname=<slave_ip>

и Мастер начинает использовать

./jmeter -n -t /home/user/test.jmx -R <slave_ip>

и я получаю следующую ошибку на главной машине:

Creating summariser <summary>
Created the tree successfully using /home/user/test.jmx
Configuring remote engine: <slave_ip>
Starting remote engines
Starting the test @ Tue Nov 06 10:34:00 EST 2018 (1541518440058)
Error in rconfigure() method java.rmi.MarshalException: error marshalling arguments; nested exception is: 
    java.io.NotSerializableException: org.apache.jmeter.threads.RemoteThreadsListenerTestElement
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445

Тестовый скрипт test.jmx - это просто GET на google.com, без использования каких-либо сторонних плагинов.

Я использую Ubuntu 16.04.4 LTS, и JMeter был получен на веб-сайте JMeter.

Кто-нибудь испытывал эту проблему и решил ее?

Примечание: я видел несколько сообщений, связанных с этим, но они устарели. а также решения не работали.

Редактировать 1: И Slave, и Master используют версию 5.0 r18409351. Я также пробовал запускать оба на 1 хосте, и у меня такая же ошибка.

Редактировать 2: Посмотрев на jmeter.log, я заметил, что он пытается подключиться к localhost, хотя у меня был remote_host=<slave_ip> на jmeter.properties. я добавил -Djava.rmi.server.hostname=<slave_ip> в командную строку Мастера. Теперь я получаю следующее исключение на jmeter.log

2018-11-06 16:20:12,963 INFO o.a.j.r.RmiUtils: Local IP address=<slave_ip>
2018-11-06 16:20:12,965 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2018-11-06 16:20:12,967 ERROR o.a.j.e.ConvertListeners: RemoteException occurred while replacing Remotable item.
java.rmi.server.ExportException: Listen failed on port: 0; nested exception is: 
        java.io.IOException: Could not bind to /<slave_ip> using port 0
        at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:348) ~[?:1.8.0_181]
        at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:254) ~[?:1.8.0_181]
        at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411) ~[?:1.8.0_181]
        at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147) ~[?:1.8.0_181]
        at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:236) ~[?:1.8.0_181]
        at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:383) ~[?:1.8.0_181]
        at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:346) ~[?:1.8.0_181]
        at java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:225) ~[?:1.8.0_181]
        at org.apache.jmeter.samplers.RemoteSampleListenerImpl.<init>(RemoteSampleListenerImpl.java:44) ~[ApacheJMeter_core.jar:5.0 r1840935]
        at org.apache.jmeter.engine.ConvertListeners.addNode(ConvertListeners.java:78) [ApacheJMeter_core.jar:5.0 r1840935]
        at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:976) [jorphan.jar:5.0 r1840935]
        at org.apache.jmeter.engine.ClientJMeterEngine.runTest(ClientJMeterEngine.java:135) [ApacheJMeter_core.jar:5.0 r1840935]
        at org.apache.jmeter.engine.DistributedRunner.start(DistributedRunner.java:132) [ApacheJMeter_core.jar:5.0 r1840935]

Скрипт JMeter

Есть ли у ведомого точно такая же версия jmeter?

user7294900 06.11.2018 17:59

@ user7294900 Есть, у обоих версия 5.0 r1840935. Также я попытался запустить оба на одном хосте, и у меня была такая же проблема.

luizfzs 06.11.2018 18:00

Вы можете поделиться своим планом тестирования? Я пробовал использовать простой план тестирования и распределенный тест, но не воспроизводю, поэтому должно быть какое-то условие. Также предоставьте jmeter.log и jmeter-server.log. Спасибо

UBIK LOAD PACK 06.11.2018 21:27

@UBIKLOADPACK обновил вопрос

luizfzs 06.11.2018 22:24

Спасибо, но ваша ссылка не работает, я получаю 404

UBIK LOAD PACK 06.11.2018 22:35

@UBIKLOADPACK исправлен. извиняюсь. это была опечатка

luizfzs 06.11.2018 23:33

Я обновил свой ответ. На данный момент я не могу протестировать ту же версию Java. Но трэвис jmeter работает с openjdk

UBIK LOAD PACK 06.11.2018 23:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
771
2

Ответы 2

Сначала убедитесь, что вы используете одну и ту же версию Java для клиента и сервера.

Используя ваш план тестирования, он работает для меня с Oracle JDK 8u161:

Для запуска сервера с IP 192.168.0.33:

./jmeter -Djava.rmi.server.hostname=192.168.0.33 -Dserver_port=5000 -s -j jmeter-server.log

На клиенте:

./jmeter -n -t /data/jmeter/testplan.jmx -R192.168.0.33:5000

Да, это одна и та же версия

luizfzs 06.11.2018 18:55

Я запустил ./jmeter -n -t /data/jmeter/testplan.jmx -R<slave_ip>:1099, но у меня все еще есть Could not bind to /<slave_ip> using port 0

luizfzs 07.11.2018 17:29

Кажется, вы отправляете не на тот порт, это настраиваемый, поэтому вызовите IP с портом как

 remote_host=<slave_ip>:1099

By default, JMeter uses the standard RMI port 1099.

On the client, update the remote_hosts property to include the new remote host:port settings

Другие вопросы по теме