2

ノードの 1 つがダウンしたときに Membase で例外を回避する方法を示す Java の例を探しています。

「デフォルト」バケットが 1 つある 2 つのノードからなる小さなクラスターがあります。両方のサーバーで複製されます。ストレス負荷用の小さな Java テスト アプリを作成しました。spymemcache 2.7 を使用しています。実行すると、両方のサーバーがビジーになります。1 つの membase インスタンスをシャットダウンすると、Java アプリがクラッシュします。

例外ログは次のとおりです。

2011-06-15 17:32:33.405 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/192.168.1.9:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2011-06-15 17:32:33.407 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/192.168.1.10:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2011-06-15 17:32:33.412 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@63238bd2
2011-06-15 17:32:33.413 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@37bd2664
2011-06-15 18:20:21.896 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to exception on {QA sa=/192.168.1.9:11211, #Rops=2, #Wops=0, #iq=0, topRop=net.spy.memcached.protocol.binary.StoreOperationImpl@5f4275d4, topWop=null, toWrite=0, interested=1}
java.io.IOException: Connection reset by peer
    at sun.nio.ch.FileDispatcher.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:237)
    at sun.nio.ch.IOUtil.read(IOUtil.java:210)
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
    at net.spy.memcached.MemcachedConnection.handleReads(MemcachedConnection.java:487)
    at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:427)
    at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:280)
    at net.spy.memcached.MemcachedClient.run(MemcachedClient.java:2063)
2011-06-15 18:20:21.897 WARN net.spy.memcached.MemcachedConnection:  Closing, and reopening {QA sa=/192.168.1.9:11211, #Rops=2, #Wops=0, #iq=0, topRop=net.spy.memcached.protocol.binary.StoreOperationImpl@5f4275d4, topWop=null, toWrite=0, interested=1}, attempt 0.
2011-06-15 18:20:21.898 WARN net.spy.memcached.protocol.binary.BinaryMemcachedNodeImpl:  Discarding partially completed op: net.spy.memcached.protocol.binary.StoreOperationImpl@5f4275d4
2011-06-15 18:20:21.899 WARN net.spy.memcached.protocol.binary.BinaryMemcachedNodeImpl:  Discarding partially completed op: net.spy.memcached.protocol.binary.GetOperationImpl@802b249
Exception in thread "main" java.lang.RuntimeException: Exception waiting for value
    at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1146)
    at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1163)

ノード 192.168.1.9 をダウンさせましたが、クライアントはそれを理解せずにクラッシュしました。

それを適切に処理する方法はありますか?

4

3 に答える 3

0

そのため、質問に対する答えが見つからず、このソフトウェアはもう使用していません。現在、Erlang を使用して、そのような種類のメモリ内データ ストレージの必要性を完全に明らかにしています。

于 2012-05-17T08:40:48.223 に答える
0

ローカルで単一の memcached サーバーを実行し、データをキャッシュして取得するテスト ケースを実行すると、このエラー メッセージが表示されたため、これは memcached クラスターが原因ではないと思います。以下の環境で使用していました mac Snow Leapord + spymemcached 2.7 + memcached 1.4.6

デーモン モードで実行していましたが、ローカルの memcached サーバーを再起動した後に修正されました。

申し訳ありませんが、この原因を正確に伝えることはできませんが、上記を実行すると問題が解決しました。

于 2011-07-27T22:29:23.387 に答える
0

-サーバーをフェールオーバーすると、例外はなくなりますか? -クライアントを指しているサーバーの URI はどれですか? 「他の」ものおよび/またはそれらの両方を指す場合、違いはありますか?

ペリー

于 2011-06-16T18:49:39.657 に答える