2011-11-02 1 views
3

python-memcached를 사용하여 많은 키를 저장하려고 할 때 문제점을 발견했습니다.Python memcached set_multi 저장 문제

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. 

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 [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 개를 저장할 수는 없습니까?

답변

0

확인. memcached 1.4.2에는 Ubuntu 10.04 LTS의 마지막 버전 인 버그가있는 것으로 보입니다. Memcached 1.4.5는 정상적으로 작동합니다.

1

오히려 파이썬-memcache에 나뿐만 아니라 우분투 11 Memcache를 1.4.7에서이 문제를 본 적이

사용하는 것보다, 당신의 memcache에 드라이버로 pylibmc 사용해보십시오.

+0

불행히도 우리는 여전히 django 1.2를 사용하고 있으므로 pylibmc는 현재 옵션이 아닙니다. – dragoon

+1

Memcached 버전 1.4.13, 클라이언트 (클라이언트)로 native API (telnet), 클라이언트 드라이버로 memcached로 memcached하는 오류가 발생합니다. .. – DanFromGermany