经典TCP性能问题

  某PHP服务通过Nginx将后面的tair封装了一下,让其他应用通过http协议访问Nginx来 get 和 set 操作tair。上线后一切测试正常,每次操作几毫秒,但有个应用的value是300K,这个时候set一次要300毫秒以上。 没有任何并发压力,单线程单次操作也要这么久。

  这个延迟没有道理,为什么会这样?




  因为TCP协议为了做一些带宽利用率、性能的优化,而做了特殊处理,如Delay Ack和Nagle算法。这个原因对于理解TCP基本概念后能在实战中了解一些TCP其它方面的性能和影响。






  大家都知道TCP是可靠传输,可靠的核心是收到包后回复一个ack来告诉对方已收到。


  截图中的Nignx - 8085端口收到了一个http request请求,然后回复了一个ack包给client,接着回复了一个 http response 给 client。回复的ack包长度66,实际内容长度为0。ack信息放在TCP包头里面,也就是说,这里发了一个66字节的空包给客户端来告诉客户端收到请求了。

  逻辑没问题,符合TCP核心可靠传输的意义。但问题是:带宽效率不高。能优化吗?

  这里的优化就是delay ack

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值