memcached noreply 和tcp Nagle
memcached 对某些操作例如set,add支持noreply。也就是memcached 服务器不会对客户端进行应答。
假如在极短时间内,基于同一tcp connection(tcp_nodelay =false),进行2次操作,第1次是noreply,第2次need reply,并且2次的请求数据都非常小,会发生什么事呢?
下面基于java 客户端 xmemcached 1.3.5试一下,客户端和服务器分别部署在两台linux上。代码如下:
- for (int i = 0; i < 10; i++) {
- long start = System.currentTimeMillis();
- memcachedClient.setWithNoReply("a", 0, "Hello,xmemcached");//1
- //memcachedClient.set("a", 0, "Hello,xmemcached");//2
- Thread.sleep(1);
- String value = memcachedClient.get("a");
- long end = System.currentTimeMillis();
- System.out.println("ttl(ms)=" + (end - start));
- }
打印出来的花费时间除了第一次,其他的都需要40ms左右。如果不使用setWithNoReply而使用set,就几乎0ms。
40ms的延时是受了nagle 算法和ack delayed的影响。不太清楚的同学可gg一下或http://www.iteye.com/topic/1110883#2201434,该帖子的作者阐释的比较具体了。八卦一下,该作者也是xmemcached 的作者。
附:setWithNoReply和get之间睡眠1ms,是为了避免这两个操作被装进同一tcp包里。一开始测不出40ms的延时,还以为哪里出了问题,通过tcpdump发现两个操作在同一个tcp包发送。
memcached noreply 和tcp Nagle相关推荐
- TCP Nagle算法简述
TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认.为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据.(一个连接会设置MS ...
- 【计算机网络】2、TCP:四次挥手与TIME_WAIT、shutdown() 优雅关闭 server、探活、拥塞窗口与 Nagle 算法、端口占用、tcp 的流式协议、可靠性
文章目录 六.四次挥手 与 TIME_WAIT 6.1 TIME_WAIT 的作用 6.2 TIME_WAIT 的危害和方案 七.server 用 shutdown() 优雅关闭 7.1 close( ...
- spymemcached 的 useNagle 问题与 TCP/IP延迟发送数据
先说一下结论. 如果你没有特意在 spymemcached 的 client bean definition 里配置 useNagleAlgorithm 属性为 True, 那么默认 spymemca ...
- Nagle算法延时确认
数据流分类 成块数据 交互数据 Rlogin需要远程系统(服务器)回显我们(客户)键入的字符 数据字节和数据字节的回显都需要对方确认 rlogin 每次只发送一个字节到服务器,而Telnet 可以 ...
- 为什么我的modbus tcp server只能连一个client_TCP 协议概览
文章说明,视频分享 喜欢c++ Linux后台服务器开发的朋友可以后台私信[架构]获取图中视频 背景知识--互联网分层模型 应用层(DNS,FTP,HTTP,RTSP,SSH,TLS/SSL, XMP ...
- 让memcached和mysql更好的工作
让memcached和mysql更好的工作 来源:http://chaoqun.17348.com/2008/08/memcached_work_with_mysql 这次是Fotolog的经验,传说 ...
- mac memcached_如何在Mac OS上安装Memcached Server
mac memcached Memcached is an open-source high performance distributed memory object caching system. ...
- memcached 命令_Memcached Telnet命令示例
memcached 命令 In earlier posts, we saw how to install Memcached server on Mac OS and Unix systems. Af ...
- 基于滴滴云搭建安全稳定的 Memcached 服务器
介绍 Memcached 是一种内存 cache 系统,通过将一些高频使用和最近经常访问的信息储存在内存中,可以明显地优化访问后端数据库的性能. 直观上来看,借助于 Memcached 组件,可以大量 ...
最新文章
- 通过OKR复盘会议你会学到哪些?
- 零基础开始学 Web 前端开发,有什么建议吗?--知
- android wheelview 字体颜色,百行代码实现Android WheelView
- 查看和修改Oracle数据库服务器端的字符集
- iPhone 5用户们,苹果又喊你更新了,不然可能会变砖!
- 股票冲高回落意味着什么?
- vue 动态添加路由
- 前端学习资料网址收集整理
- python基础3-运算符总结_位操作符_优先级问题
- Boost Asio dispatch()与post()的区别
- 2级c语言程序设计无忧考试,无忧考吧二级c模拟考试系统
- hexo 环境变量_优雅的博客框架,快速、简洁、高效且主题丰富——Hexo
- Web服务客户端应用程序
- 全面罩防毒面具市场调研
- Smart210使用superboot刷机
- Spire.pdf-使用学习记录
- 关于C语言颜色改变方法
- 用python做梦幻手游刷宝图脚本
- Redis——过期时间/过期回收策略
- 百度Sugar BI 数据可视化里的标签页组件如何实现