3

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 を超えるエントリを保存することについて話している人を見ましたが、私にとっては 2 000 も保存できないのですか?

4

2 に答える 2

1

python-memcache を使用するのではなく、memcache ドライバーとして pylibmc を使用してみてください。

この問題は、Ubuntu 11 の Memcache 1.4.7 でも見られました。

于 2011-11-13T21:07:18.660 に答える
0

Ok。Ubuntu10.04LTSの最後のバージョンであるmemcached1.4.2にいくつかのバグがあるようです。Memcached1.4.5は正常に動作します。

于 2011-11-03T12:23:56.557 に答える