【发布时间】:2012-06-14 02:18:19
【问题描述】:
每个slab类至少有一个页面,当没有可用的内存分配时,它会驱逐“tails”列表中的项目。那为什么会跑到 MEMACACHED_MEMORY_ALLOCATION_FAILURE 状态呢?
【问题讨论】:
标签: memcached allocation
每个slab类至少有一个页面,当没有可用的内存分配时,它会驱逐“tails”列表中的项目。那为什么会跑到 MEMACACHED_MEMORY_ALLOCATION_FAILURE 状态呢?
【问题讨论】:
标签: memcached allocation
我认为这是一个 libmemcached 状态,而不是一个 memcached 状态。在任何情况下,当应用程序从底层分配器(malloc)请求内存并且 malloc 不返回堆内存时,都会发生这种情况。由于无法完成对内存的请求,您可能会收到这样的错误,因为应用程序将无法继续处理您的请求。
【讨论】:
客户端调用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;
...
完全不可能发生
【讨论】: