2012-03-08 28 views
0

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

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

回答

0

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

也许也是我错了,在别的地方你的问题的原因隐藏。
希望这会帮助你诊断和解决你的问题。