0

マルチスレッド キュー リーダーに membase サーバーへのアクセスを提供するために、enyim を使用しています。これらのリーダーは AQMP キューにアクセスし、キャッシュをチェックしてアイテムがすでに処理されているかどうかを確認し、そうでない場合はデータベースとキャッシュに挿入します。問題は、キャッシュへのアクセスが CPU を食い尽くすことです。メッセージを処理する 4 つのスレッドでは、CPU は 80 ~ 90% です。enyim にバイトを供給するカスタム シリアライザーを実装しました。インメモリ フォールバックに切り替えると、CPU 使用率が高くなる前に最大 9 スレッドに進むことができます。インメモリ キャッシュと membase キャッシュの唯一の違いは、バイトがキャッシュではなくメモリに格納されることです。この高い CPU 使用率を引き起こしている可能性がある、または正常な eynim で何が間違っている可能性がありますか? 最大で、クライアントは約 2 を実行しています。

4

1 に答える 1

0

既知のボトルネックの 1 つは、キャッシュにアクセスするたびに新しい MembaseClient を作成することです。MembaseClient の 1 つのインスタンスを作成し、その同じインスタンスを渡すことをお勧めします。詳細については、次のリンクを確認してください。

https://github.com/enyim/EnyimMemcached/wiki/MembaseClient-Usage

于 2011-06-27T04:14:08.797 に答える