当前位置: 首页 > news >正文

《Web性能权威指南》笔记:TCP的优化建议

参考书籍:Web性能权威指南

1. 服务器配置调优

  1. 服务器升级到最新内核
    • TCP的最佳实践以及影响其性能的底层算法一直在与时俱进,而且大多数变化都只在最新内核中才有实现。让你的服务器跟上时代是优化发送端和接收端TCP栈的首要措施。
  2. 增大TCP的初始拥塞窗口
    • 加大起始拥塞窗口可以让TCP在第一次往返的时候就传输较多数据,而随后的速度提升也会很明显。对于突发性的短暂连接,这也是特别关键的一个优化。
  3. 禁用慢启动重启 SSR(Slow-Start Restart)
    • SSR对于那些会出现突发空闲的长周期TCP连接(比如HTTP的keep-alive连接)有很大的影响。在连接空闲时禁用慢启动可以改善瞬时发送数据的长TCP连接的性能。
  4. 窗口缩放 (RFC 1323)

    • 启用窗口缩放可以增大最大接受窗口大小,可以让高延迟的连接达到更好吞吐量。
      窗口缩放 (RFC 1323)
  5. TCP快速打开

    • 在某些条件下,允许在第一个SYN分组中发送应用程序数据。TFO(TCP Fast Open,TCP快速打开)是一种新的优化选项,需要客户端和服务器共同支持。为此首页要搞清楚你的应用程序是否可以利用这个特性。

2. 应用程序行为调优

  1. 消除不必要的数据传输,能少发就少发。
    • 减少下载不必要的资源
    • 通过压缩算法把需要发送的数据的比特数降到最低
  2. 让数据传输的距离变短
    • 在不同的地区部署服务 器(比如,使用 CDN(Content Delivery Network,即内容分发网络)),把数据放到接近客户端的地方,可以减少网络往返的延迟, 从而显著提升 TCP 性能。
  3. 尽可能重用已经建立的 TCP 连接,把慢启动和其 他拥塞控制机制的影响降到最低。

3. 性能检查清单

  • 把服务器内核升级到最新版本(Linux:3.2+);
  • 确保 cwnd 大小为 10;
  • 禁用空闲后的慢启动;
  • 确保启动窗口缩放;
  • 减少传输冗余数据;
  • 压缩要传输的数据;
  • 把服务器放到离用户近的地方以减少往返时间;
  • 尽最大可能重用已经建立的 TCP 连接。

相关文章:

  • MongoDB学习笔记(一) 安装与文件简介
  • MongoDB学习笔记(二) 搭建简单的MongoDB服务器
  • MongoDB学习笔记(三) MongoDB的基本操作
  • 保留一位小数
  • uniapp向另外一个页面传值
  • 小程序实现image标签的图片铺满整个屏幕,高度自适应
  • 百度小程序实现页面返回上一级局部刷新
  • 小程序实现多个按钮点击跳转动态更换样式
  • 小程序实现数据的定时刷新,退出之后数据也不会变成初始值
  • vue模糊的知识点《一》
  • vue模糊知识点《二》
  • 脚手架安装保姆级过程
  • 正则表达式总结,易懂
  • 面试问题总结
  • template标签的用法总结
  • [译] 怎样写一个基础的编译器
  • __proto__ 和 prototype的关系
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Brief introduction of how to 'Call, Apply and Bind'
  • ComponentOne 2017 V2版本正式发布
  • CSS 三角实现
  • C语言笔记(第一章:C语言编程)
  • nginx 配置多 域名 + 多 https
  • PHP 7 修改了什么呢 -- 2
  • Python socket服务器端、客户端传送信息
  • Python学习笔记 字符串拼接
  • STAR法则
  • Vue全家桶实现一个Web App
  • 将 Measurements 和 Units 应用到物理学
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 我感觉这是史上最牛的防sql注入方法类
  • 一个完整Java Web项目背后的密码
  • #WEB前端(HTML属性)
  • (1)(1.9) MSP (version 4.2)
  • (C语言)fgets与fputs函数详解
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十八)三元表达式和列表解析
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)四层和七层负载均衡的区别
  • .FileZilla的使用和主动模式被动模式介绍
  • .Mobi域名介绍
  • .net core开源商城系统源码,支持可视化布局小程序
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET Remoting学习笔记(三)信道
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • @Autowired和@Resource的区别
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [.net]官方水晶报表的使用以演示下载
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured