web-dev-qa-db-ja.com

Memcache-多くのノードがある分散環境での問題

私は他の同様のタイトルの質問をざっと見てきましたが、現在私が抱えている問題に特に類似したものはありません。

基本的に、マルチノードのmemcachedリングは2年以上実行されており、ほとんどの場合、問題は発生していません。 memcacheのインストールは最近専用サーバーに移動され、容量は3倍になりました(2x 1GBから2x3GB)。最初は、phpライブラリがサーバーと通信する方法に問題があると思われる問題が発生しました。サーバーリストの順序に問題があるか、サーバーが正しく起動されていません。

サーバーは「正しく機能しているように見えました」が、キーは複数のサーバーに保存されているようで、有効期限が切れても値のすべてのインスタンスが期限切れになるわけではありません。

基本的に、ハッシュメカニズムを標準から一貫性に変更し、キールックアップ(および期限切れ/取得)の問題とすべてが正常に戻ったようです。

ただし、過去数週間にわたって監視を行っており、最初のサーバーが2番目のサーバーよりも何度もヒットしているように見えることに気付きました(PHP memcacheモニターツールは1つの平均を報告します- 1,200ヒット秒、秒は5)のみです。

誰でも説明できますか:

  • まず、上記で何が起こっているのか、なぜ1つのサーバーが「分散」環境でこれほど多くのヒットを獲得するのかについての考え
  • 次に、分散状況でのmemcacheクライアントの推奨設定は何ですか
    • コンシステントハッシュ法を使用して正しいことをしていますか
    • フェイルオーバーを使用する必要がありますか?;
    • バイナリストレージ?;
    • または圧縮?
  • ライブmemcacheリングをリセット/移動するための正しい手順は何ですか

Memcachedはその目的に最適な素晴らしいツールであることがわかりましたが、実際のベストプラクティスガイドと有用なドキュメント(詳細に説明されているものはほとんどありません)はほとんどありません。何が起こっているのかについてある程度の洞察を得ることができれば、間違いなくすべての人が見ることができる技術記事として投稿します(将来的に役立つように)が、現在問題が発生しています!

前もって感謝します

2
kwiksand

Memcachedと通信するフロントエンドがプールの構成エントリを適切に同期していることを確認しますか?

すべてのサーバーが、接続の問題が少ないMemcachedノードにクリーンに接続できますか?

Memcached :: OPT_LIBKETAMA_COMPATIBLEもオンになっていることを確認してください。

構成について;大きなオブジェクトを保存している場合、圧縮/イグビナリはネットワークI/O側で処理を高速化しますが、明らかに欠点がある可能性があるため、それぞれの場合が異なります。ベンチマークが鍵です。

0
Aleksey Korzun