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();
Возможно, я тоже ошибаюсь, и причина вашей проблемы скрывается в другом месте.
Надеюсь, что это поможет вам диагностировать и решить вашу проблему.