参考书籍:Web性能权威指南
1. 服务器配置调优
- 服务器升级到最新内核
- TCP的最佳实践以及影响其性能的底层算法一直在与时俱进,而且大多数变化都只在最新内核中才有实现。让你的服务器跟上时代是优化发送端和接收端TCP栈的首要措施。
- 增大TCP的初始拥塞窗口
- 加大起始拥塞窗口可以让TCP在第一次往返的时候就传输较多数据,而随后的速度提升也会很明显。对于突发性的短暂连接,这也是特别关键的一个优化。
- 禁用慢启动重启 SSR(Slow-Start Restart)
- SSR对于那些会出现突发空闲的长周期TCP连接(比如HTTP的keep-alive连接)有很大的影响。在连接空闲时禁用慢启动可以改善瞬时发送数据的长TCP连接的性能。
- 窗口缩放 (RFC 1323)
-
启用窗口缩放可以增大最大接受窗口大小,可以让高延迟的连接达到更好吞吐量。
- TCP快速打开
- 在某些条件下,允许在第一个SYN分组中发送应用程序数据。TFO(TCP Fast Open,TCP快速打开)是一种新的优化选项,需要客户端和服务器共同支持。为此首页要搞清楚你的应用程序是否可以利用这个特性。
2. 应用程序行为调优
- 消除不必要的数据传输,能少发就少发。
- 减少下载不必要的资源
- 通过压缩算法把需要发送的数据的比特数降到最低
- 让数据传输的距离变短
- 在不同的地区部署服务 器(比如,使用 CDN(Content Delivery Network,即内容分发网络)),把数据放到接近客户端的地方,可以减少网络往返的延迟, 从而显著提升 TCP 性能。
- 尽可能重用已经建立的 TCP 连接,把慢启动和其 他拥塞控制机制的影响降到最低。
3. 性能检查清单
- 把服务器内核升级到最新版本(Linux:3.2+);
- 确保 cwnd 大小为 10;
- 禁用空闲后的慢启动;
- 确保启动窗口缩放;
- 减少传输冗余数据;
- 压缩要传输的数据;
- 把服务器放到离用户近的地方以减少往返时间;
- 尽最大可能重用已经建立的 TCP 连接。