ISUCON14 にチーム「完璧な一日」で参加しました。技術サークルの友人2人とチームを組みました。
最終スコアは10,285でした。
関連:
オブザーバビリティ
OpenTelemetry を使ってオブザーバビリティのある状態を作りました。実際には十分なオブザーバビリティとは言えない様子だったのですが、最低限競技に使えるくらいにはなりました。
オブザーバビリティバックエンドは Honeycomb というサービスを使いました。
次のようなダッシュボードを作り、ボトルネックを探すのに役立てました。
例1. Nginx のリクエストを遅い順に並べる
例2. MySQL クエリのダイジェストを遅い順に並べる
もちろん、これらの設定を当日準備するのは時間がかかるので、事前にコンフィグのスニペットを作ったり、Ansible で OpenTelemetry Collector をインストールできるようにしています。また、オーバーヘッドもあるので、競技終了直前に OpenTelemetry Collector のサービスは止めました。
サーバー構成
競技環境の3台のサーバーは次の構成にしました。
「サーバーは3台使えたほうがいいだろうから、すぐに分けられるところを分けよう」という方針でやったので、もっといいやり方がありそうです (MySQL を分けるとか) 。
やりたかったこと
大会本番にできなかったことは、MySQL でパフォーマンススキーマを使った分析です。OpenTelemetry の SQL Query Receiver と合わせてモニタリングできたら便利だったなと思っています。
例えば、実行したクエリについて rows_examined
や rows_sent
をモニタリングできると、問題あるクエリの発見が早くなるだろうと思ってます。
感想
競技環境はダッシュボードがかっこよかったですし、ベンチマークがすぐに実行されるのもよかったです。
個人的には、参加登録時点で OpenTelemetry を使いたいと思っていたので使えてよかったです。また、データベースに苦手意識があったのですが、今回の ISUCON を機に入門して苦手意識が減ったのもよかったです。
最後に、チーム組んでくれた2人に感謝。