Я обнаружил проблему при попытке сохранить много ключей с помощью python-memcached.
Вот что я делаю:
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 записей в нем, но для меня это даже не может хранить 2000?