![debian tcp - 针对有数据包丢失的客户端进行优化](https://linux22.com/image/576151/debian%20tcp%20-%20%E9%92%88%E5%AF%B9%E6%9C%89%E6%95%B0%E6%8D%AE%E5%8C%85%E4%B8%A2%E5%A4%B1%E7%9A%84%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%9B%E8%A1%8C%E4%BC%98%E5%8C%96.png)
我有一台带宽为 100 Mbps 的 Debian 服务器。我的客户端大多使用 3G 网络连接,平均时长为 30 分钟。很多客户端都很少出现丢包,但每次丢包后,tcp 链接都会停滞 30 秒或更长时间,然后一切才会恢复正常。
服务器使用了大约5%的CPU、内存和带宽。
我遇到了一系列适用于 debian 和调整 tcp 堆栈的选项: http://www.linuxinsight.com/proc_sys_net_ipv4.html
我想知道哪个参数可以让服务器或客户端在数据包丢失时延迟更少的时间。有什么想法吗?
答案1
很难排除数据包丢失问题 - TCP 确实不喜欢它,并且强烈地认为这是容量超载的标志,而不是网络不可靠。对于 3G 链接来说... 并不总是如此。
http://linuxgazette.net/135/pfeiffer.html记录如何选择替代拥塞控制算法,并说明 Linux 内核中一些可用的选项。
您几乎肯定希望tcp_frto
启用它,因为它设计用于在无线电网络等间歇性丢失环境中正常工作,与互联网不同。
tcp_maxreordering
如果当窗口很大时您遭遇损失,您可能考虑提高默认值。
确保 SACK 和类似功能已打开;我怀疑您是否已将它们关闭,但以防万一……
除此之外,没有什么可以真正帮助你。拥塞控制响应,尤其是恢复,是提高性能的关键。不过,不要指望奇迹,无论你做什么,不要以为任何事情都会让生活变得更好,除非你测试彻底!