2012-05-21 4 views
3

Я использую JMeter для загрузки нашего SMTP-сервера с использованием TCP Sampler (класс BinaryTCPClientImpl) для запуска HELO, подождите 30 секунд, а затем QUITING.JMeter TCP Sampler некорректно сообщает 500

SMTP-сервер принимает HELO и отвечает соответствующим образом, при этом JMeter регистрирует правильный ответ, однако он, похоже, не находит ответ и вместо этого отображает тайм-аут ответа и показывает отказ 500 для запроса.

В журналах JMeter он говорит:

ERROR - jmeter.protocol.tcp.sampler.TCPSampler:  org.apache.jmeter.protocol.tcp.sampler.ReadException: 
at org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl.read(BinaryTCPClientImpl.java:137) 
at org.apache.jmeter.protocol.tcp.sampler.TCPSampler.sample(TCPSampler.java:350) 
at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:416) 
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.net.SocketTimeoutException: Read timed out 
at java.net.SocketInputStream.socketRead0(Native Method) 
at java.net.SocketInputStream.read(Unknown Source) 
at java.net.SocketInputStream.read(Unknown Source) 
at java.net.SocketInputStream.read(Unknown Source) 
at org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl.read(BinaryTCPClientImpl.java:123) 

Это несмотря на то, что удалось войти ожидаемый ответ!

Я предполагаю, что JMeter каким-то образом не смог определить конец ответа?

Любые мысли о том, как решить или отладить это, будут высоко оценены.

+0

Как это должно было найти конец ответа? –

+0

Я угадал настройку tcp.eolByte в jmeter.properties, которую я сделал (до 10). –

+0

10 десятичных, шестнадцатеричных или восьмеричных? –

ответ

5

Если вы не указали EOM byte, он будет читать until the end of the stream. Поскольку поток не кончится, время истекает. Вы должны правильно установить байт EOM для протокола, который вы используете.

+0

Протокол SMTP, поэтому последние 2 байта должны/r/n (0d0a/1310). У меня eolbyte установлен до 10, но он все еще не работает. –

+1

Aah Я понимаю, что вы имеете в виду, думал, что вы опечатали байт EOM и означали tcp.eolByte! Настройка tcp.BinaryTCPClient.eomByte to 10 делает все работы. Ура! –

+0

Как я могу отправить несколько запросов на одноканальное соединение с помощью tcp sampler? следует ли переписать TCP Sampler? – Mikhail

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