我想将文件发送到至少100个客户端。一个文件是225MB。我做了一些测试,我甚至无法实现80-90%的可用带宽用于发送文件。
将文件发送给一个客户端时:8秒
对于2个客户:45-50秒(这是一个显着增加)
对于50个客户,它会持续增加30分钟。
网络带宽为1Gbps。这意味着我可以达到超过100MB / s的速度。
以下是与此相关的代码部分:
totalSize = (int) file.length();
response.setContentType("application/octet-stream");
response.setContentLength(totalSize);
response.setHeader("Content-Disposition", "attachment; fileName=\"" + fileName + "."+extension+"\"");
is = new FileInputStream(file);
OutputStream os = nresponse.getOutputStream();
int byteRate = DmConstants.BYTE_RATE;
byte[] buff = new byte[DmConstants.BYTE_RATE];
int a = -1;
while((a = is.read(buff)) != -1)
{
// a is the number of bytes ACTUALLY read, so
// when we write, that's the number of bytes to write
os.write(buff,0,a);
}
os.flush();
os.close();
is.close();
BYTE_RATE
是1MB的缓冲区大小。如何提高性能?
复制文件时,我可以获得125MB / s的速度,看起来不错。 我猜多次读/写操作需要花费很多时间(sBYTE_RATEyscall)。 有什么方法可以减少吗?
答案 0 :(得分:0)
以下列出了可用于提高性能的技术: