2012-04-18 9 views
1

Spymemcachedをmemcached Javaクライアントとして選択しました。設定されたメソッドが見つからず、返答がない場合、他のmemcachedクライアントよりも10倍も速いようです。memcachedクライアントとサーバーの間で280qpsを実現するにはどうすればよいですか?

私のコード:

memcachedClient.set(キー、0、値);

代わりに:

memcachedClient.set(鍵、0、値)に.get();

私は時間のコストがはるかにセットの結果よりも気にします。

これははるかに速いようですが、memcachedクライアントでメモリリークが発生する可能性があります。

memcachedサーバーと同じコンピュータで4を実行すると、memcachedクライアントプロセスごとに約2Gのメモリが割り当てられます。そして、8コアCPUと4Gメモリはほぼ完全に消費されます。ローカルネットインタフェース「lo」はわずか0.2Gbits /秒です。

どのようにしてCPUとメモリの消費率を引き下げ、memcached qpsのスピードを上げることができますか。

memcachedクライアントから280k qpsが必要です。それぞれのqpsは50B鍵長と500B値長のデータを送信します。今、私は、ローカルホストでmemcachedクライアントを起動して、ネットワークインタフェースの帯域制限を回避しようとしています。 4つのmemcahcedプロセスでは、それぞれが6スレッドを実行します。今では目標とは大きく離れている180qpsをほとんど実現でき、CPUとメモリが限界になります。また、実際のjava memcachedクライアントを含む同じコンピュータで暴風雨を流す必要があります。もちろん、私はmemcachedクライアントがコアリソースを占有することを許可できません。

どのように私はCPUとメモリの消費を減らすことができますか、または単一のコンピュータ上のいくつかのjava memcachedクライアントと分散memcachedサーバー間で280qpsを実現するにはどうすればいいですか?

getとsetの両方がクエリの半分を取る。私は毎回50個のキーを取得するgetMultiを試すことができます。しかし、質問はまだそこにあります。

あなたの種類の返信を期待しています。お気軽に!

答えて

関連する問題