情况: 我正在使用JMeter来加载测试我的通信应用程序(Cleo VLTrader)。我是JMeter的新手,能够使HTTP通信正常工作,但不能使用FTP。当我尝试使用JMeter FTP请求采样器时,我可以在服务器端看到JMeter正在发出一个“PASV”命令,此后不久由于“502 PASV命令不可用”错误而失败。JMeter(Active?)FTP到VLTrader
问题: 如何配置我的JMeter FTP请求采样器以连接到我的FTP服务器?
情况: 我正在使用JMeter来加载测试我的通信应用程序(Cleo VLTrader)。我是JMeter的新手,能够使HTTP通信正常工作,但不能使用FTP。当我尝试使用JMeter FTP请求采样器时,我可以在服务器端看到JMeter正在发出一个“PASV”命令,此后不久由于“502 PASV命令不可用”错误而失败。JMeter(Active?)FTP到VLTrader
问题: 如何配置我的JMeter FTP请求采样器以连接到我的FTP服务器?
1.对不起,您只是为了确保:您是否确保手动FTP连接成功,即不是来自FTP请求在Jmeter脚本中,而是通过控制台/ 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请求使用的被动模式。
参见例如this解释两种模式的差异。
可能的解决方案:
作为每jmeter sources:
ftp.enterLocalPassiveMode();
切换到被动模式是用于通过缺省,并且没有可能在FTP Request configuration screen外部设置模式。
但是你可以自己实现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();
也许也是我错了,在别的地方你的问题的原因隐藏。
希望这会帮助你诊断和解决你的问题。