如何优化HTTP服务器的TCP堆栈?

我有一个只服务于两种页面的HTTP服务器:大约10 KB和大约16 KB(都是压缩的,其他文件来自CDN)。 由于延迟非常高( ping时间超过300毫秒),我想优化TCP堆栈,以便客户端尽快收到整个页面。

因此,我有一个双重的问题:

  • 我必须更改哪个参数(TCP窗口的哪个值)?
  • 如何更改(Debian框和FYI,在HTTP服务器之前有一个清漆)。

如果您遇到这种高延迟,我想您要做的一件事是避免TCP慢启动 。 默认情况下,TCP堆栈将在发送前3个数据包后等待ACK,在这种情况下,由于往返时间的原因,这意味着延迟600 ms。 这里已经废弃了 。 据此,除了移植到内核版本2.6.33以外,在Linux中不能轻易改变这个数字。

也许你可以用更大的值重新编译你的内核,或者移动到一个允许你在这个参数上使用更大值的操作系统(我认为Solaris可以在这里调整)。

在应用程序方面,请确保启用HTTP Keep-Alive以避免每个HTTP请求的慢启动。

我不认为有很多关于具体的TCP / IP和其他networking相关的设置你可以在内核中改变,以大幅降低延迟,即从300毫秒降低到100毫秒以下。 除非有什么configuration不正确,导致这种滞后,或服务器过于繁忙(或硬件问题)。

您需要向服务器提供更多的跟踪路由数据,以及ping服务器的ping结果以及其他任何可能导致此类延迟的原因。