我有一个服务器需要每次请求传输大量数据(约1-2GB)。每个send调用的推荐数据量是多少?这个有关系吗?
我有一个服务器需要每次请求传输大量数据(约1-2GB)。每个send调用的推荐数据量是多少?这个有关系吗?
您的数据包大小受协议的最大传输单元(MTU)限制。如果发送的数据包大于MTU,则会出现数据包分段。
您可以进行一些计算:http://www.speedguide.net/articles/mtu-what-difference-does-it-make--111 更多参考资料:http://en.wikipedia.org/wiki/Maximum_transmission_unit
但是,我的建议是,如果您的目标是足够好,并且只需让操作系统网络层完成其工作,除非您正在编程原始套接字或传递某些奇怪的选项,否则通常操作系统将具有网络缓冲区并尽力而为。
考虑到这个最后的选项,那么socket.send()不过是从用户进程内存到内核私有内存的内存传输。经验法则是不要超过虚拟内存页面大小http://en.wikipedia.org/wiki/Page_(computer_memory,通常为4KB。
send()
函数发送1-2GB的数据,但由于内存带宽的限制这也是不合理的。那么中间点在哪里呢? - chacham15