JMeter (активный?) FTP для VLTrader

Ситуация: я использую JMeter для загрузки моего коммуникационного приложения (Cleo VLTrader). Я новичок в JMeter, и смог установить связь HTTP, но не FTP. Когда я пытаюсь использовать сэмплер JMeter FTP Request, я вижу на стороне сервера, что JMeter выдает команду "PASV", и вскоре после этого происходит сбой из-за ошибки "502 PASV command not available".

Вопрос: Как мне настроить мой сэмплер JMeter FTP Request для подключения к моему FTP серверу?

1 ответ

Решение

1. Извините за это, но только для того, чтобы убедиться: вы убедились, что FTP-соединение успешно установлено вручную, то есть не из FTP-запроса в сценарии jmeter, а через консольное /telnet-соединение или какую-либо утилиту клиента FTP?


2. Пассивный режим FTP

Возможная причина:
Так как ваш запрос FTP не выполняется во время выполнения команды PASV, можно предположить, что основной причиной является то, что ваш ftp-сервер не поддерживает пассивный режим, в то время как FTP-запрос jmeter использует пассивный режим по умолчанию.

Чтобы убедиться в этом, попробуйте переключиться в пассивный режим после подключения к FTP через консоль, например:

telnet your.ftp.server.url 21
USER yourusername
PASS yourpassword
PASV

или же

ftp -d your.ftp.server.url
USER yourusername
PASS yourpassword
passive

или используя любую клиентскую утилиту ftp, у которой есть возможность выбрать режим (активный / пассивный) для подключения.

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

Смотрите, например, это для объяснения различий в обоих режимах.


Возможное решение:
Согласно источникам jmeter:

ftp.enterLocalPassiveMode();

Переключение в пассивный режим используется по умолчанию, и нет возможности установить внешний режим на экране конфигурации FTP-запроса.

Но вы можете реализовать ftp-запрос самостоятельно, избегая использования FTP-запроса.
Вы можете использовать реализацию FTPClient из Apache Commons Net и скрипт ftp-соединения в BeanShell Sampler.

Очень упрощенно это может выглядеть так:

import org.apache.commons.net.ftp.*;

FTPClient client = new FTPClient();
client.setDataTimeout(3600000);
client.connect(ftpHost,ftpPort);
client.login(userName, userName);
client.setFileType(FTPClient.BINARY_FILE_TYPE);

...

// FTPClient uses 'active mode' by default
if (ftp_passive_mode) {
    client.enterLocalPassiveMode();
} else {
    client.enterLocalActiveMode();
}

...

client.logout();
client.disconnect();

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

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