我试图用python-memcached存储大量密钥时发现了一个问题。 下面是我在做什么:Python memcached set_multi存储问题
import memcache
# This dict has a 2270 entries that is generated on production server
v = eval(open("/home/dragoon/output").read())
a = memcache.Client(['unix:/tmp/memcached.sock'], debug=1)
下一个我试图将所有这些值:
In [94]: len(a.set_multi(v))
MemCached: MemCache: unix:/tmp/memcached.sock: timed out. Marking dead.
Out[94]: 2270
memcached服务器的日志输出:
...
27: going from conn_new_cmd to conn_parse_cmd
<27 set d750bde63a98579f9c2987907aaaf5f8 1 0 18
27: going from conn_parse_cmd to conn_nread
> FOUND KEY d750bde63a98579f9c2987907aaaf5f8
>27 STORED
27: going from conn_nread to conn_write
Failed to write, and not due to blocking: Broken pipe
27: going from conn_write to conn_closing
<27 connection closed.
后一段时间:
In [96]: len(a.set_multi({'test':1}))
Out[96]: 0
In [97]: a.get('test')
Out[97]: 1
默认的超时时间为3秒,但将时间增加到100秒也无济于事,memcached只是陷入困境。 所以,我的问题是,memcache有什么问题?
我看到有人在谈论存储超过1000 000个条目,但对我来说,它甚至不能存储2 000?
不幸的是,我们仍在使用django 1.2,因此pylibmc目前不是一个选项( – dragoon
)。在Memcached版本1.4.13,本地API(telnet)作为客户端和php/pear memcached作为客户端驱动程序时也会发生错误。 .. – DanFromGermany