2012-03-08 19 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(); 

也許也是我錯了,在別的地方你的問題的原因隱藏。
希望這會幫助你診斷和解決你的問題。