为什么谈HTTP1.1 Pipelining呢?主要问题根源还是来源于Beetlex参加了techempower的测试。先看一下以下两项测试的结果:

以上分别是.net平台的Json和Plaintext的测试结果,其实Plaintext最高能跑700多万RPS已经完全超了对网络IO读写损耗的认知,即使10G的光卡也不可能每秒承载1400万的IO R/W。Beetlex在其他测试结果都非常不错,但在最基础的Plaintext得到了最差的结果!为了解决这一问题我看了N次aspcore的框架代码看有没有细小的差异引起问题,结果经过N次的尝试一年后还是无法解决。。。

发现问题

最近我翻看了techempower针对20轮的测试说明,其中有一条说是要废弃Plaintext项,说这一个项并不符合实际应用需求。后来看了一下评论的一项

在这里我才看到了HTTP/1.1的pipelining描述。。。后来查了一下资源才发现techempower好像在2015年单独为Plaintext测试项引入pipelining模式,主要用于测试框架在带宽上的吐吞能力,而beetlex在实现HTTP1.1里并没去实现它!看到这信息后心里瞬间无数的草尼马飘过。。。,原因这一年针对这一问题的解决方法完全是姿势不对!

Pipelining模式有什么好?

在这里先说一下HTTP/1.1的基础通讯模式,就是发起一个请求后等待响应后再发起下一个请求;这样每个请求响应最少占用一个网络读和网络写的操作。在pipelining模式下的操作则是可以同时发起多个请求,然后等待多请求同时响应,这就意味着多请求响应可以合并到一个网络读写上,这样的性能提供是巨大的.由于pipelining模式的使用是非常有限,只允许GET和HEAD请求,所以很多语言的HttpClient组件并不支持这种方式。

从上图可以了解到,非pipelining模式下,三个请求最少占用3次IO读写,而使用pipelining后则可以缩减成1次IO读写,这样有多少性能提升可以查看《评估服务基础性能应该参考那些指标?》。对http1.1的pipelining了解 发现techempower的Plaintext测试之所以有这么高的响应能力并不是为了反映服务器的网络IO高效,而是通过pipelining模式实现的一个高带宽吞吐的技巧测试,由于不具备实用性所以才在讨论中提议废弃它。

总结

由于没有了解techempower的细节导致一直踩在这坑上,整整浪费了大量的时间去查看实现问题;由于姿势不对未能解决问题,但在调整过程中也尝试各种线程队列调整和测试收获还是有的,更重要的一点是BeetleX不再为这一问题而烦恼。

了解一下HTTP1.1 Pipelining技术相关推荐

  1. 前端性能优化常用代码

    前端性能优化常用代码 为什么要做性能优化?性能优化到底有多重要? 网站的性能优化对于用户的留存率.转化率有很大的影响,所以对于前端开发来说性能优化能力也是重要的考察点. 性能优化的点非常的多,有的小伙 ...

  2. 暴肝!7000 字的前端性能优化总结 | 干货建议收藏

    为什么要做性能优化?性能优化到底有多重要? 网站的性能优化对于用户的留存率.转化率有很大的影响,所以对于前端开发来说性能优化能力也是重要的考察点. 性能优化的点非常的多,有的小伙伴觉得记起来非常的麻烦 ...

  3. 讲武德,你们要的7000字前端性能优化干货 ,来了

    为什么要做性能优化?性能优化到底有多重要? 网站的性能优化对于用户的留存率.转化率有很大的影响,所以对于前端开发来说性能优化能力也是重要的考察点. 性能优化的点非常的多,有的小伙伴觉得记起来非常的麻烦 ...

  4. 2017双11技术揭秘—阿里巴巴数据库技术架构演进

    摘要: 每年电商双11大促对阿里技术人都是一次大考,对阿里数据库团队更是如此.经过9年的发展,双11单日交易额从2009年的0.5亿一路攀升到2017年的1682亿,秒级交易创建峰值达到了32.5万笔 ...

  5. 阿里总部对外解密双11超级工程背后的数据库技术

    2018年1月19日,阿里巴巴数据库事业部联合技术战略部在阿里西溪园区总部,也是双11技术的发源地,举办了一场线下<双11数据库技术峰会>,超过100名企业CTO.CIO和数据架构师到场参 ...

  6. DOCM技术介绍 来源“中程在线”

    DCOM DCOM(分布式组件对象模型,分布式组件对象模式)是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务器程序对象.DCOM基于组件对象模型(COM ...

  7. 在Redis中使用Pipelining提升查询速度

    Redis是一个client-server模式的TCP服务,也被称为Request/Response协议的实现. 这意味着通常一个请求的完成是遵循下面两个步骤: Client发送一个操作命令给Serv ...

  8. 连肝 7 个晚上,总结了 66 条计算机网络的知识点

    作者 | 哪吒 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 计算机网络知识是面试常考的内容,在实际工作中经常涉及.最近,我总结了66条计算机网络相关的知识点. 1.比较http ...

  9. 2020-2021Android中高级面试题大全

    第一章网络面试题 1.HTTP协议 HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web ...

最新文章

  1. Native层HIDL服务的注册原理-Android10.0 HwBinder通信原理(六)
  2. ELK:kibana使用的lucene查询语法
  3. 如何处理新建的SAP CRM产品category没有出现在列表的问题
  4. python导入gif_Python之GIF图倒放,沙雕快乐源泉!我已经笑了一天了!
  5. Kafka Broker常用配置详解
  6. STM32-OLED显示
  7. spss正态性检验_SPSS和R中的正态分布的确定和几何均值的计算
  8. 魅族魅蓝max简单打开USB调试模式的经验
  9. 如何使用数据质量服务和SQL Server集成服务清除数据
  10. java标识符_Java标识符的简单介绍
  11. linux 的 swapper 进程不能sleep,深入理解perf报告中的swapper进程
  12. java excel 导入oracle_java代码导入excel数据至oracle(poi方式)
  13. 地表最强报表工具,一张模板秒杀数百Excel !
  14. 普鸥知识产权|如何申请美国外观专利?申请费用、时间、流程?
  15. 国有数据要素市场的政策红利,你get 到了吗?
  16. jQuery(一个JavaScript库)
  17. 深入table之collapse
  18. 【Java分享客栈】SpringBoot线程池参数搜一堆资料还是不会配,我花一天测试换你此生明白。
  19. 深入浅出即时通讯(1)_即时通讯协议对比
  20. 车载测试-HIL硬件在环测试

热门文章

  1. [asp.net mvc 奇淫巧技] 04 - 你真的会用Action的模型绑定吗?
  2. JS获取本周、本季度、本月、上月的开端日期、停止日期
  3. 搜索引擎 ElasticSearch 之 步步为营2 【基础概念】
  4. 职场智慧之如何提升自己在公司的价值
  5. 大师之路-GoLive 视频教程
  6. JSP数据库连接方式总结
  7. C#自定义字符串压缩和解压缩源码库
  8. 【转】 ConstraintLayout 完全解析 快来优化你的布局吧
  9. 10分钟学会vue滚动行为
  10. POJ3751 时间日期格式转换【日期计算】