はじめに
医療系クラウドサービスを提供しているレイヤードという会社で働いています。
今回あるサービスのデータベースにおいてLock wait timeout exceeded
が発生し、やたら処理時間が長いヤツがいそうだゾ(しかもトランザクションかけてやがる!)、という事で犯人捜しをした時のメモです。
AWSのClowdWatchでRailsのproductionログを対象に「◯秒以上の処理」を検索しました(しょーもなくてごめんなさいw)。
RailsのログでなくてもDBやWebサーバのログ検索も同様に使えると思います。
前提
当然ながらClowdWatchにログを上げている前提です。
Railsのログは下図のようになっており矢印のms箇所を検索します。
手順
- ClowdWatchの画面で「ログのインサイト」で検索します
- ロググループで検索対象のログを選択したらフィルタを追加して絞り込みます
- 2行目のparseで
q_time
にmsの数値部分を格納します - 3行目の
q_time*1
で数値にキャストした上で、演算子を利用して検索します(本ログはmsなので画像では10秒以上かかった処理になります)
おわりに
弊社のインフラエンジニアの方に教えてもらいました。
私同様に正規表現で検索している方は是非お試しください。
※普通にドキュメントに分り易く書いてあるんです。ごめんて。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html