Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA NIO中影响文件传输的字节分配_Java_Byte_Buffer_Nio_Filechannel - Fatal编程技术网

JAVA NIO中影响文件传输的字节分配

JAVA NIO中影响文件传输的字节分配,java,byte,buffer,nio,filechannel,Java,Byte,Buffer,Nio,Filechannel,我有一个7Gig文件要在两种情况下使用JAVA NIO发送: 首先是客户端将是一个发送文件,我分配的缓冲区是500MB的速度很快,只花了30秒 第二,服务器将是发送文件的服务器,我仍然使用500MB作为缓冲区,但发送文件几乎需要30分钟,但当我减少缓冲区分配时,它会提高性能,直到达到1MB缓冲区分配,并且发送文件需要1分钟 但是在第一个场景中,我也会降低它,但它只会降低发送文件的性能 有人能解释一下为什么会发生这种情况吗?从发布的信息来看,这可能是TCP在服务器端的拥塞避免/唠叨。 要检查对

我有一个7Gig文件要在两种情况下使用JAVA NIO发送:

  • 首先是客户端将是一个发送文件,我分配的缓冲区是500MB的速度很快,只花了30秒

  • 第二,服务器将是发送文件的服务器,我仍然使用500MB作为缓冲区,但发送文件几乎需要30分钟,但当我减少缓冲区分配时,它会提高性能,直到达到1MB缓冲区分配,并且发送文件需要1分钟

但是在第一个场景中,我也会降低它,但它只会降低发送文件的性能


有人能解释一下为什么会发生这种情况吗?

从发布的信息来看,这可能是TCP在服务器端的拥塞避免/唠叨。 要检查对速度的影响,请遵循每种方法,并注意每一步的差异

  • 通过TCP\u无延迟禁用Nagle
  • 使用分散,收集

  • 这两个方面的例子都可以在这里找到:

    什么是服务器?什么是客户?哪里R/W字节源代码?我们需要更多的细节。如果你是通过TCP套接字发送的,任何超过1MB的缓冲区大小都是过分的。发布一些代码:两种情况下的发送和接收代码。你所说的过度杀戮是什么意思?不会解释30::1的差异,也不会解释任何东西,除非他在发送之间有莫名其妙的巨大差距。分散/聚集I/O与Nagle算法无关,也与传输文件无关。你的链接中的代码无效。公平的顶级点,关于问题的更多信息,包括代码,将使你更好地理解为什么较小的文件会有60倍的差异或2倍的差异。分散-聚集IO将帮助NIO高效地使用服务器核心,对吗?分散-聚集来自什么?这是一个文件。只有一个数据源。为什么分散收集对单个文件没有帮助?