由于我无法在网络中找到任何可靠程序,一旦平板中的密钥计数>检索到所有memcache密钥。 500k我想用PHP编写自己的程序。
然后我意识到为什么所有的程序都没有真正适用于这么多的密钥。
当我用stats cachedump <slab-id> <limit>
读取密钥时,它只返回一定数量的密钥 - 在我的情况下 - 以大约30k结束。
我怎样才能获得至少这500k可能在一块平板上?
所有&#34;帖子&#34;和&#34;答案&#34;建议使用memdump
不起作用。他们也有这个限制。
我正在使用memcached 1.4.25
答案 0 :(得分:4)
调试memcached
来源后,我意识到此行造成的限制是items.c
/ item_cachedump()
:
unsigned int memlimit = 2 * 1024 * 1024; /* 2MB max response size */
由于此分配,分配的缓冲区限制了返回键的数量,因为所有键的总长度[包括每个键名后的\r\n
] 不得超过此大小。< / p>
我可以通过这种方式解决我的问题,我将其更改为:
unsigned int memlimit = 128 * 1024 * 1024;
并重新编译memcached
。现在我可以阅读大约700k键[我没有更多键来最大化功能]。
我发现非常高的值会使系统不稳定。值500 * 1024 * 1024
[e.q. 500MB]我的系统几乎崩溃了这条消息:
shell-init:检索当前目录时出错:getcwd:无法访问 父目录:没有这样的文件或目录
即使我的服务器有5GB RAM,我也不明白为什么,但最后128 MB的值是可用值。
我要求memcached
developer team添加一个可以在命令行中设置值的开关。