エムスリーテックブログエムスリーテックブログ読者になるエムスリーテックブログエムスリー(m3)のエンジニア・開発メンバーによる技術ブログです2022-12-22モニタリング環境改善してシステムの安定化進めてますこんにちは、基盤チームでエンジニアをやっている桑原です。今日はモニタリング環境を整えた結果エラー解決できたケースをご紹介します。Hiring概要とあるプロジェクトにて、リクエストが増えるタイミングで不定期にDBコネクションエラーが発生しました。アプリログからだけだと原因究明が全く進まなかった状況で、モニタリング環境を整備していくことで解決の糸口を見つけることができました。1つのデータベースに複数のサービス用テーブルがありました。データベースの共有はよくないので個別のサービス用のデータベースへ分離するプロジェクトを進めています。APIで取得するようにしました。着手当初のサービスBのモニタリングは以下の状況でした。上述のデータベース分離プロジェクトを本番環境へデプロイしたところ、不定期にエラーが多発することがありました。アプリログ、前述のモニタリングから以下のことはわかりました。サービスBにてDBコネクション取得失敗が多発アクセス数が増える時間帯に発生。毎日ではなく不定期に発生DBの負荷は多少上がっているがDB側にアラート出ていない厄介なことに、アクセス数が増えたからといって必ずエラーが発生するわけではないため再現性がない上に、ログからはDBコネクション取得の失敗程度の情報しか取れなかったため原因の根本がつかめずにいました。」ことを疑い、優先的に調査しました。前述の通りDBへの全体のコネクション数のモニタリングが存在していたため確認したところ、以下の状況でした。DBの全体コネクション数アラート数として設定している900に対して使用数は500程度と、余裕はまだまだありそうです。ここから読み取れる情報としては、APIリクエスト数が多すぎてDBコネクションを使い切ってしまったことは考えにくいです。全体のDBコネクションが使い切られているわけではなさそうLBによる振り分け先の偏りがあるわでけもなさそうといった事実から、特定のインスタンスのみで問題が発生していることを疑いました。該当エラーが発生したログどうやら、特定のインスタンスでコネクションが取得できなかったためエラーが多発していたことがわかりました。それともエラーが発生したインスタンスのみ何か起こったのか?といったデータは取ることができずに未解決なままでした。これでは次のアクションが取れません。」が原因であることを想定していました。正確に認識する必要があります。「アクティブ数」をモニタリングすれば何かわかるかもしれないと想定し、それぞれのモニタリング環境を整えることを優先タスクにしました。メトリクスをグラフ表示させました。1つのグラフにまとめるところで少々苦戦しましたが、ここは同僚の助けを借り解決できました。60))を定義することで、1つのグラフでまとめることができました。まとめることで、視認性があがりました。widgetのサンプル上から各taskすべてのDBコネクションのアクティブ数、アイドル数、アクティブ数がグラフ表示できています。再発から原因究明モニタリング環境を整えたあとに、再発したタイミングですぐモニタリング確認しました。ログと突合したところ、エラーが発生しているインスタンスとアイドルコネクションが跳ね上がったインスタンスが同じことも判明したため、例外発生とアイドルコネクション数の急増は関係ありそうに想像できました。そもそもアイドルコネクション数が跳ね上がっているという想定をしていなかったため、意外な現象が発生していたことがわかります。再発時30分後のDBコネクションアイドルコネクション数が30分で落ち着いたようにみえます(それに伴い全体のコネクション数も落ち着いているように見られます)。アイドルコネクション数が急増したことを契機としてDBコネクションが取得できなくなってしまった。仮に接続に失敗したゾンビコネクションが生き残り続けたとしたら、アイドルコネクション数が急増し、更にアクティブコネクションとして使用を試みた際にエラーが発生するのも納得できます。いう設定を見つけられることができました。limit.設定してなくてごめんなさいをして、適切な値に設定しました。プロパティを適切に設定したところ、たまにアイドルコネクション数が一瞬跳ね上がることはあるのですが、すぐに想定通りの範囲に収まるようになりました。この対応が効いているのか、リクエスト数が急増してもエラーは発生していません。まとめと今後アイドルコネクション数が急増していることは全くイメージできておらず、モニタリング環境の整備を進めていなければ発見できなかったと思います。モニタリングで見えた「30分」という数値を元に検索することで、設定すべきプロパティを見つけることができたことは想像以上のモニタリング環境の恩恵を受けられたと思います。設定によりエラーの発生は抑えられてます。アイドルコネクション数の急増が発生しているかは未だ原因がわかっていません。今は対処療法としての対応ができているだけですので、そもそもの原因究明を考えてます。導入することで解決の糸口になることを期待して、導入するための環境準備を進めています。Hiring日々改善を繰り返してより良い環境を目指してます。製薬企業向けプラットフォームチームで...2021-12-20Spannerのノード数を時間帯ごとに変更するエムスリーエンジニアリングGの遠藤(@en_ken)です。9注目記事はてなブログをはじめよう!m3techさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。