JMeter(正在使用吗?)FTP至VLTrader


问题内容

情况:我正在使用JMeter对通信应用程序(Cleo
VLTrader)进行负载测试。我是JMeter的新手,并且能够使用HTTP通信,但不能使用FTP。当我尝试使用JMeter
FTP请求采样器时,在服务器端可以看到JMeter正在发出“ PASV”命令,此后不久由于“ 502 PASV命令不可用”错误而失败。

问题:如何配置JMeter FTP请求采样器以连接到FTP服务器?


问题答案:

1. 对此感到抱歉,只是为了确保:您是否已确保FTP连接手动成功,即不是通过jmeter脚本中的FTP Request,而是通过控制台/
Telnet连接或任何FTP客户端实用程序?

2. FTP被动模式

可能的原因:
由于您的FTP请求在PASV命令执行期间失败,因此可以认为根本原因是您的ftp服务器不支持被动模式,而jmeter的FTP请求默认情况下使用被动模式。

为了确保此操作,请从控制台连接到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请求。
您可以从Apache Commons
Net
使用FTPClient实现,并在BeanShell
Sampler中使用
脚本ftp连接。

非常简化,看起来可能像这样:

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();

也许我也错了,而您的问题的原因隐藏在另一个地方。
希望这将帮助您诊断和解决问题。