アマゾンウェブサービスでホストされているウェブアプリがあります。私たちのデータベースは、5.1.57を実行するマルチaz RDS MySQLサーバーであり、3〜4台のアプリサーバーがデータベースと通信します。
今日、「ロック待機タイムアウトを超えました。トランザクションを再起動してみてください」という行に沿って多くのエラーが発生し始めました。POSTリクエストのほぼ1%がこれを確認しています。
サイトで実行されているコードに変更はありません。スキーマの変更はありません。トラフィックはそれほど急増していません。私は実行中のプロセスを見てきましたが、制御不能なものはありません。
RDSインスタンスを小さいものから大きいものにスケーリングしてみましたが、効果はありませんでした。
2日前、Amazonでいくつかの停止が発生しました。それからの回復の一環として、RDSサーバーとアプリサーバーは異なるアベイラビリティーゾーンに配置されましたが、すべて同じリージョン内にありました。しかし、昨日はすべてが順調だったので、それが関係しているとは確信していません。
ロックタイムアウトはさまざまなタイプのリクエストで発生し、さまざまなInnoDBテーブルで発生します。
問題が発生し始めたときに、開いている接続の数が急増していることに気付きましたが、それらは症状であり、原因ではない可能性があります。
これをデバッグするための次のステップは何ですか?
おそらく起こったことは、RDSインスタンスをサポートする1つ以上のEBSボリュームでIOの損失でした。EBSの再ミラーリングによるIOの削減量は、かなりのものです。データベースへの影響において重要です。
プレミアムサポートの料金を支払う場合、そのチームはそのような詳細を調べるか、AWSフォーラムで質問することができます。 RDSエンジニアは、根本的なEBSの問題または原因を確認できる可能性があります。