我们在数据中心租用了几台专用服务器,装有 Debian 7、内核 3.2。
我们将其中一台服务器用作数据库服务器。我们的应用服务器和数据库服务器之间的网络不是我们专用的,而是由数据中心的其他客户使用的。
我们不时会发现这条线路上有 TCP 重传。我们认为这是由于拥塞或 DDoS 攻击造成的。我们的提供商会尝试阻止攻击,但当然并不总是能立即成功。
无论如何。通常我们的应用服务器会在 20 毫秒内从数据库获取结果,因为数据库服务器非常快,往返时间 (RTT) 平均值为 0.3 毫秒(因此低于 1 毫秒)。
当 TCP 数据包在此线路上丢失时,重新传输超时 (RTO) 就会启动。它由往返时间计算,但至少为 200 毫秒。因此,当一个数据包需要重新传输时,由于 RTO,我们的应用服务器有 220 毫秒的时间才能获得其数据。
对于我来说,rto_min=200ms 对于 rtt 低于 1ms 的链接来说似乎太高了。
可以ip
像这样设置 rto_min:
ip route change default via 144.76.176.65 dev eth0 rto_min 5ms
RTO 仍在计算,但由于我们的 RTT 非常小,因此可以降至 5ms。
我应该考虑这一点吗?或者将 rto_min 设置得太小会不会造成其他 TCP 陷阱?rto_min 的合理值是多少?或者最好不要触碰它?