【问题标题】:In what condition can memcached run into allocation failurememcached 在什么情况下会遇到分配失败
【发布时间】:2012-06-14 02:18:19
【问题描述】:

每个slab类至少有一个页面,当没有可用的内存分配时,它会驱逐“tails”列表中的项目。那为什么会跑到 MEMACACHED_MEMORY_ALLOCATION_FAILURE 状态呢?

【问题讨论】:

    标签: memcached allocation


    【解决方案1】:

    我认为这是一个 libmemcached 状态,而不是一个 memcached 状态。在任何情况下,当应用程序从底层分配器(malloc)请求内存并且 malloc 不返回堆内存时,都会发生这种情况。由于无法完成对内存的请求,您可能会收到这样的错误,因为应用程序将无法继续处理您的请求。

    【讨论】:

      【解决方案2】:

      客户端调用libmemcached.libmemcached抛出异常时出现此错误包括以下几种情况:

      1 realloc、malloc、calloc

      2 查看源代码段如下:

      ...
      new_size= sizeof(char) * (size_t)((adjust * MEMCACHED_BLOCK_SIZE) + string->current_size);
      if (new_size < need)
        return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
      ...
      

      完全不可能发生

      【讨论】:

        猜你喜欢
        • 2014-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-05
        • 2014-01-02
        相关资源
        最近更新 更多