这可能是重复的,但我还没有看到这完全得到回答。HTTP下载和多线程
使用线程时HTTP下载吞吐量是否增加? 我的想法是,当服务器上的TCP堆栈在发送下一块数据之前正在等待接收方的确认时,另一个线程正在发送数据请求,然后对其进行处理,从而提高吞吐量。
这是正确的吗?
这可能是重复的,但我还没有看到这完全得到回答。HTTP下载和多线程
使用线程时HTTP下载吞吐量是否增加? 我的想法是,当服务器上的TCP堆栈在发送下一块数据之前正在等待接收方的确认时,另一个线程正在发送数据请求,然后对其进行处理,从而提高吞吐量。
这是正确的吗?
是的,这是非常正确的。对HTTP请求进行线程处理会提高吞吐量,直到服务器上达到最大连接数,然后这种增加会持续平稳。当然,性能提升将仅限于服务器和客户端计算机的线程能力。
只有在启动时才是正确的,在传输过程中TCP有一个可以在没有收到ACK的情况下发送的动态数据窗口。
所以,当数据传输正在进行时,在大多数情况下,可以发送的每个数据块都会发送,从而实现最大吞吐量。
当您使用多个线程时,您可以减少TCP握手中的死区时间。 如果您必须从不同服务器下载文件,或者服务器限制每个连接的带宽,它也可能很有用。