Page 48 - Web性能权威指南
P. 48
视应用程序的类型,可能还有必要调整服务器上的其他 TCP 设置,以便优化高速连
接的速度、内存占用,或者其他类似的关键选项。不过,这些系统配置与平台、应
用程序、硬件有关,超出了本书讨论范围;必要时,可以参考平台文档。但更重要
的是要分清轻重缓急,着力解决真正的瓶颈,而不是眉毛胡子一把抓。
Linux 用户可以使用 ss 来查看当前打开的套接字的各种统计信息。在命令
行里运行 ss --options --extended --memory --processes --info,可以看
到当前通信节点以及它们相应的连接设置。
2.5.2 应用程序行为调优
调优 TCP 性能可以让服务器和客户端之间达到最大吞吐量和最小延迟。而应用程序
如何使用新的或已经建立的 TCP 连接同样也有很大的关系。
• 再快也快不过什么也不用发送,能少发就少发。
• 我们不能让数据传输得更快,但可以让它们传输的距离更短。
• 重用 TCP 连接是提升性能的关键。
当然,消除不必要的数据传输本身就是很大的优化。比如,减少下载不必要的资源,
或者通过压缩算法把要发送的比特数降到最低。然后,通过在不同的地区部署服务
器(比如,使用 CDN),把数据放到接近客户端的地方,可以减少网络往返的延迟,
从而显著提升 TCP 性能。最后,尽可能重用已经建立的 TCP 连接,把慢启动和其
他拥塞控制机制的影响降到最低。
2.5.3 性能检查清单
优化 TCP 性能的回报是丰厚的,无论什么应用,性能提升可以在与服务器的每个连
接中体现出来。下面几条请大家务必记在自己的日程表里:
• 把服务器内核升级到最新版本(Linux:3.2+);
• 确保 cwnd 大小为 10;
• 禁用空闲后的慢启动;
• 确保启动窗口缩放;
• 减少传输冗余数据;
• 压缩要传输的数据;
• 把服务器放到离用户近的地方以减少往返时间;
• 尽最大可能重用已经建立的 TCP 连接。
30 | 第 2 章