1

Linux ではなく Windows XP を使用して memcache.im にキーを設定しようとすると、Java コードで ioexception が発生し、memcache サーバーが再接続されます。

コード :

public class Memcache implements Serializable  {

    MemcachedClient client;

    public static final int EXP_TIME = 10;
    public static final String KEY = "spoon";

    public static void main(String[] args)throws IOException{
        Memcache temp=new Memcache();
        Dummy dummy= new Dummy("Hello World");

        try {
           temp.client = new MemcachedClient(new InetSocketAddress("localhost", 11211));
        } catch (IOException e) {
           e.printStackTrace();
           System.err.println("connection problem");
        }
        temp.obj=temp.client.getAvailableServers();
        System.out.println(temp.obj);
        temp.obj1=temp.client.getUnavailableServers();
        System.out.println(temp.obj1);
        temp.client.add(KEY, EXP_TIME, dummy);
        Object myObject=temp.client.get(KEY);
        System.out.println(myObject);
        temp.client.delete(KEY);
    }
}

コードをデバッグしましたが、設定操作に到達すると、IOException n disconnected が発生しました。

ダミーのコードは次のとおりです。

import java.io.Serializable;

public class Dummy implements Serializable {
    String one;

    public Dummy(String one){
        this.one=one;
    }
}

スタックトレースは次のとおりです。

2012-06-15 14:30:19.259 INFO net.spy.memcached.MemcachedConnection: 追加された {QA sa=/10.2.200.104:11211、#Rops=0、#Wops=0、#iq=0、topRop=null、 topWop=null、toWrite=0、興味のある=0} キューに接続する
2012-06-15 14:30:19.274 INFO net.spy.memcached.MemcachedConnection: sun.nio.ch.SelectionKeyImpl@7cbde6 の接続状態が変更されました
[/10.2.200.104:11211]
[]
2012-06-15 14:30:22.852 INFO net.spy.memcached.MemcachedConnection: {QA sa=/10.2.200.104:11211、#Rops=1、#Wops=0、#iq=0 で例外が発生したため、再接続しています。 topRop=Cmd: セット キー: スプーン フラグ: 1 Exp: 10 データ長: 76、topWop=null、toWrite=0、興味のある=1}
java.io.IOException: 予期せず切断されました。再接続します。
    net.spy.memcached.MemcachedConnection.handleReads (MemcachedConnection.java:452) で
    net.spy.memcached.MemcachedConnection.handleIO (MemcachedConnection.java:380) で
    net.spy.memcached.MemcachedConnection.handleIO (MemcachedConnection.java:242) で
    net.spy.memcached.MemcachedConnection.run (MemcachedConnection.java:833) で
2012-06-15 14:30:22.852 WARN net.spy.memcached.MemcachedConnection: 閉じて、再開 {QA sa=/10.2.200.104:11211、#Rops=1、#Wops=0、#iq=0、topRop =Cmd: セット キー: スプーン フラグ: 1 Exp: 10 データ長: 76、topWop=null、toWrite=0、興味がある=1}、試行 0。
2012-06-15 14:30:22.852 WARN net.spy.memcached.protocol.ascii.AsciiMemcachedNodeImpl: 部分的に完了した op を破棄: Cmd: セット キー: スプーン フラグ: 1 Exp: 10 データ長: 76
2012-06-15 14:30:24.868 INFO net.spy.memcached.MemcachedConnection: 再接続 {QA sa=/10.2.200.104:11211、#Rops=0、#Wops=0、#iq=0、topRop=null、 topWop=null、toWrite=0、興味あり=0}
2012-06-15 14:30:24.868 INFO net.spy.memcached.MemcachedConnection: sun.nio.ch.SelectionKeyImpl@113beb5 の接続状態が変更されました
2012-06-15 14:30:31.665 INFO net.spy.memcached.MemcachedConnection: {QA sa=/10.2.200.104:11211、#Rops=1、#Wops=0、#iq=0 で例外が発生したため再接続しています。 topRop=Cmd: キーを取得: スプーン Exp: 0、topWop=null、toWrite=0、興味がある=1}
java.io.IOException: 予期せず切断されました。再接続します。
    net.spy.memcached.MemcachedConnection.handleReads (MemcachedConnection.java:452) で
    net.spy.memcached.MemcachedConnection.handleIO (MemcachedConnection.java:380) で
    net.spy.memcached.MemcachedConnection.handleIO (MemcachedConnection.java:242) で
    net.spy.memcached.MemcachedConnection.run (MemcachedConnection.java:833) で
2012-06-15 14:30:31.665 WARN net.spy.memcached.MemcachedConnection: 閉じて、再度開いています {QA sa=/10.2.200.104:11211、#Rops=1、#Wops=0、#iq=0、topRop =Cmd: キーを取得: スプーン Exp: 0、topWop=null、toWrite=0、興味がある=1}、試行 0。
2012-06-15 14:30:31.665 警告 net.spy.memcached.protocol.ascii.AsciiMemcachedNodeImpl: 部分的に完了した操作を破棄: Cmd: キーを取得: スプーン Exp: 0
2012-06-15 14:30:33.680 INFO net.spy.memcached.MemcachedConnection: 再接続 {QA sa=/10.2.200.104:11211、#Rops=0、#Wops=0、#iq=0、topRop=null、 topWop=null、toWrite=0、興味あり=0}
2012-06-15 14:30:33.680 INFO net.spy.memcached.MemcachedConnection: sun.nio.ch.SelectionKeyImpl@edf389 の接続状態が変更されました
スレッド「メイン」での例外 java.lang.RuntimeException: 値を待っている例外
    net.spy.memcached.MemcachedClient.get (MemcachedClient.java:1001) で
    net.spy.memcached.MemcachedClient.get (MemcachedClient.java:1018) で
    ballydev.Memcache.main (Memcache.java:39) で
原因: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Canceled
    net.spy.memcached.internal.OperationFuture.get (OperationFuture.java:103) で
    net.spy.memcached.internal.GetFuture.get (GetFuture.java:62) で
    net.spy.memcached.MemcachedClient.get (MemcachedClient.java:997) で
    ... 2以上
原因: java.lang.RuntimeException: Canceled
    ... 5 つ以上
4

1 に答える 1

1

問題をデバッグするには、リクエストの送信元のサーバーから memcached に telnet で接続してみてください。memcached は、IP アドレスを明示的に指定して開始された場合、他のホストへの接続を拒否できます。

于 2012-06-15T14:47:02.440 に答える