web-dev-qa-db-ja.com

memcachedが通知なしにクラッシュしました

私たちはmemcacheに大きく依存しており、月に数十億のリクエストを処理しています。 5つのmemcacheサーバーがあります。昨夜、トラフィックが25%増加しました。グラフは、各memcacheによって転送されるリクエストとデータが増加し、クラッシュしたことを示しています。連鎖反応が始まり、各memcacheサーバーが次々にクラッシュしました(サーバーあたりの負荷が増加しました)。

Syslog、メッセージ、memcacheログファイルにログが見つかりませんでした(詳細設定がオフでした)。

2つの質問があります:

  1. なぜこれが正確に起こったのかをどうやって知ることができますか。負荷がmemcacheの問題である場合、通常のmemcache(適切な構成で実行)が処理できる量に関するドキュメントはありますか。この値を増やすにはどうすればよいですか。

  2. 彼らが二度と下がらないようにするにはどうすればよいですか。最終的には、mysqlサーバーとレプリケーションに影響を与え、他の多くの関連サービスに影響を与えました。より多くのmemcacheサーバーが必要ですか?

このinit.dスクリプトを使用してmemcacheを開始しました: http://Pastebin.com/wfMnB4ta ここで、/ etc/default/memcachedのENABLE_MEMCACHEはYESです。

/ usr/share/memcached/scripts/start-memcached: http://Pastebin.com/LaUugXye

ありがとう

6
Sparsh Gupta

バージョン1.4.5以前を実行していると思います。

トラフィックの増加について言及しているので、突然終了します。

  • 最大接続制限に達した可能性があります(これに関する説明については、 http://memcached.org/timeouts を参照してください)。
  • 長時間接続制限を叩くと、memcachedが終了するバグがありました。
  • これは1.4.6で部分的に修復され、1.4.7でさらに修復され、1.4.9で改良されました。

クラッシュが発生した場合、最初に行うことは、最新の安定版リリースを使用していることを確認することです。それでもクラッシュが発生する場合は、Twitter検索でこれを確認できるメンテナに幸運をもたらすのではなく、実際のメーリングリストに連絡するか、バグレポートを提出するのが最善の方法です。

最新の安定版に一致するように定期的にアップグレードを行うと、将来的にクラスター全体がクラッシュするのを防ぐのに役立ちます。

6
dormando

また、同様の問題に対処するために、ある種の構造的な解決策を考え出す必要があります。たとえば、リクエストの応答時間が長くなっていることに気付いた場合は、リクエストの数を減らしてください。これは、必須ではないサービスを無効にするなど、さまざまな方法で実行できます。

しかし、この特定の失敗は避けられなかったでしょう。負荷の増加を引き起こす障害についてできることはあまりありません。

0
David Schwartz