球队,

我使用JCIFS成功编写了CIFS JSR223采样器(Groovy)。但是问题是,通过增加用户我看不到良好的网络吞吐量。我尝试了分布式测试,更改了缓冲区大小(jcifs属性发送/接收)..但是没有运气。

非常感谢您的帮助...这里是我使用Jcifs进行读写的代码。

CIFS_Write的代码

import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile;
import java.net.InetAddress;
//import java.io.file;
import org.apache.commons.net.io.Util;
import jcifs.smb.SmbFileOutputStream;
//jcifs.Config.setProperty("jcifs.smb.client.ssnLimit", "1" );
jcifs.Config.setProperty("jcifs.smb.client.rcv_buf_size", "223288");
jcifs.Config.setProperty("jcifs.smb.client.snd_buf_size", "23288");
jcifs.Config.setProperty("jcifs.smb.maxBuffers", "50");
jcifs.Config.setProperty("jcifs.smb.client.tcpNoDelay", "true");
String user = "xx";
String pass ="xx";
SmbFileOutputStream out = null;
String clientIP = InetAddress.getLocalHost().getHostName();
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("",user, pass);
String sharepath =vars.get("sharename")+"server25/"+clientIP+"a1.csv";
SmbFile remoteFile = new SmbFile (sharepath, auth);
os = (SmbFileOutputStream)remoteFile.getOutputStream();
InputStream iss = new BufferedInputStream(new FileInputStream("/mnt/client.csv/"));
//InputStream iss = new BufferedInputStream(new FileInputStream("/opt/client.csv"));
Util.copyStream(iss,os,65535);

    os.close();
    iss.close();


CIFS_Read的代码:

import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile;
//jcifs.Config.setProperty("jcifs.smb.client.ssnLimit", "1" );

String user = "xx";
String pass ="xx";
jcifs.Config.setProperty("jcifs.smb.client.rcv_buf_size", "223288");
jcifs.Config.setProperty("jcifs.smb.client.snd_buf_size", "23288");
jcifs.Config.setProperty("jcifs.smb.maxBuffers", "50");
jcifs.Config.setProperty("jcifs.smb.client.tcpNoDelay", "true");

NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("",user, pass);
String clientIP = InetAddress.getLocalHost().getHostName();
String sharepath =vars.get("sharename")+"server25/"+clientIP+"a1.csv";
SmbFile remoteFile = new SmbFile (sharepath, auth);
InputStream iss = new BufferedInputStream(remoteFile.getInputStream());
byte [] buffer = new byte[65535];
while ((ch = iss.read(buffer)) != -1) {
    continue;
}
iss.close();

最佳答案

我了解,您正在尝试通过增加访问这些代码路径的用户数量来增加负载。

JCIFS维护从会话(认为用户)->传输(认为套接字到文件服务器)的映射。默认情况下,它为每个套接字分配250个会话,这可能是一个过大的选择,并且可能会使您的套接字不堪重负。

您应该尝试设置此JVM property : -Djcifs.smb.client.ssnLimit并将其设置为较低的值,例如5

关于java - JMeter-无法使用CIFS Sampler(Groovy)扩展网络带宽,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36040193/

10-09 03:41