`
ChristmasLin
  • 浏览: 42088 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

memcached noreply 和tcp Nagle

    博客分类:
  • net
阅读更多

 

memcached 对某些操作例如set,add支持noreply。也就是memcached 服务器不会对客户端进行应答。

假如在极短时间内,基于同一tcp connection(tcp_nodelay =false),进行2次操作,第1次是noreply,第2次need reply,并且2次的请求数据都非常小,会发生什么事呢?

下面基于java 客户端 xmemcached 1.3.5试一下,客户端和服务器分别部署在两台linux上。代码如下:

 

Java代码 
  1. for (int i = 0; i < 10; i++) {  
  2.      long start = System.currentTimeMillis();  
  3.      memcachedClient.setWithNoReply("a"0"Hello,xmemcached");//1  
  4.      //memcachedClient.set("a", 0, "Hello,xmemcached");//2  
  5.      Thread.sleep(1);  
  6.      String value = memcachedClient.get("a");  
  7.      long end = System.currentTimeMillis();  
  8.      System.out.println("ttl(ms)=" + (end - start));  
  9.  }  

 

 

打印出来的花费时间除了第一次,其他的都需要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 网络部分详解

    自己总结的memcached的网络部分,主要是TCP 套接字编程方面,有兴趣的可以看看。

    memcached和redis比较

    Memcached和Redis是两种广泛使用的缓存解决方案,它们各有特点,在不同的场景下发挥着独特的作用。本文将详细比较这两种技术在可靠性、数据一致性、内存管理、内存使用率、应用场景、性能以及数据恢复等方面的不同之...

    Memcached 原理和使用详解

    Memcached是一款高效、轻量级的分布式内存缓存系统,...总之,Memcached是一个强大而高效的缓存工具,广泛应用于各种高流量网站和应用中,以提高性能和可扩展性。理解其原理和正确使用方法,对于优化Web应用至关重要。

    Memcached原理和使用详解

    文件详细描述了Memcached相关原理和使用方法,内容包括:Memcached原理介绍、Memcached安装和使用说明、Memcached使用的技巧等。

    memcached 64位 window

    解压后,用户通常需要按照安装指南进行编译和安装,设置配置文件,并通过命令行工具启动和管理Memcached服务。 **集成和使用** 在Windows上部署Memcached,需要关注以下关键点: 1. **安装**:解压文件并根据官方...

    memcached安装软件 libevent magent memcached

    本篇文章将详细讲解如何安装和配置memcached,以及与之相关的libevent和magent。 首先,我们需要了解libevent库。libevent是一个事件通知库,它允许程序处理多个网络连接,并有效地处理来自不同源的事件。在安装...

    memcached官方jar和一些网上的资料

    描述中的“一些网上的资料”可能包括Memcached的官方文档、教程、社区论坛以及相关的技术博客等,这些都是学习和解决问题的好去处。例如: - 官方文档:https://memcached.org/ - Stack Overflow:...

    PHP内存缓存技术memcached 的安装和工作原理介绍

    1. 解压libevent和memcached的tar.gz文件。 2. 使用`./configure`指定安装路径,通常是`/usr`。 3. 执行`make`和`make install`来编译和安装。 4. 安装完成后,`memcached`可执行文件位于`/usr/bin`目录下。 ### 三...

    Memcached的Linux和Windows安装包

    Memcached作为一款轻量级的缓存系统,其安装过程在Linux和Windows上有所不同。在Linux上,通常涉及编译源码和配置系统服务,而在Windows上则更倾向于直接运行可执行文件并注册为服务。无论是哪种操作系统,安装完成...

    Memcached安装和配置

    本文将详细介绍如何在Windows环境下安装和配置Memcached,并探讨其基本操作和状态查询。 首先,安装Memcached的步骤如下: 1. 访问 http://code.jellycan.com/memcached/ 下载适用于Windows的最新版本(例如1.2.6...

    memcached常用指令.txt

    - `incr &lt;key&gt; &lt;value&gt; [noreply]` 和 `decr &lt;key&gt; &lt;value&gt; [noreply]`:增量和减量操作,适用于整数值的键值对。 - `stats`:显示服务器状态信息,包括PID、运行时间、版本等。 - `stats items` 和 `stats slabs`:...

    memcached服务器端memcached.exe 下载

    标签“memcached 服务器端 下载”明确了这是关于获取memcached服务端的资源,而且是下载操作,通常这包括了memcached服务器的运行文件和可能需要的客户端驱动(如PHP扩展)。 在压缩包中的`php_memcached.dll`和`...

    Memcached_原理和使用详解

    Memcached_原理和使用详解,memcache的配置和使用

    memcached安装包以及MemCachedClient

    当在编译 Memcached 时,如果选择使用 libevent 模式,可以提高其性能和可扩展性。libevent 提供了一种方式来处理多个长时间运行的连接,而无需创建大量的线程或进程。 安装 libevent: ```bash sudo apt-get ...

    memcached windows稳定版

    在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动...

Global site tag (gtag.js) - Google Analytics