2

最近、memcache サーバーを AWS の Elastic Load Balancer の背後に移動しました。この memcache で Flask-Cache も使用しています。私が間違っていなければ (間違いなくそうです)、Flask-Cache は memcache への接続を開き、それを保持します。また、ELB はこれらの長年の接続を一定期間 (約 60 分だと思います) 後に終了するようです。これにより、次のようなエラーが発生します。

SomeErrors: error 19 from flush_all: (0x4ff96f0) CONNECTION FAILURE, ::rec() returned zero, server has disconnected

これらのエラーをキャッチして再接続できる方法 (または「接続エラー時に再接続を試行する」という魔法の設定) があれば、この問題は解決します。

FWIW、私は を使用しpylibmcていますが、(私にとって)私が渡すことができる明白なものは何もありません。

どんな助けでも大歓迎です!

4

1 に答える 1

1

ELB から切断されることは非常に一般的であり、デバッグも非常に困難です。役立つ可能性のあるいくつかのことを次に示します。

デバッグのアイデア

  • ELB に接続されたインスタンスが 1 つだけのステージング環境で問題のデバッグを試みます。
  • タイム スタンプを使用してアプリケーション ログを記録し、Python ですべての例外をキャッチした場合 (これは一般的には良い考えではありません)、例外をログに記録するようにしてください。すべての例外をキャッチしている場合、別の何かのように見える微妙な隠れたバグがある可能性があります。

  • 失敗をシミュレートし (つまり、ELB から「1 つの」インスタンスを手動で削除します)、ログを見て、これがログに明示されていることを確認します。同じ動作を再現できる場合は、それを修正する方法を理解できます。

  • https://loader.io/のような Web サービス自動テスト ツールを調べてください。これは、切断が発生したように見える状況をシミュレートするのに非常に役立ちます。

  • 同じアプリケーションを別のロード バランサー、つまり HAProxy で試します (これを最後に試す可能性があります)。

于 2016-10-16T22:59:33.473 に答える