チーム太郎でやりました。楽しかった。お疲れ様でした。ありがとうございました。 チームメンバーの記事はこっち:
できたこと
- 事前準備
- リポジトリ準備
- 各種リンクのまとめ
- AWSやNewRelicの環境準備
- git pullデプロイをできるようにした
- GithubにDeployKeyを登録
deploy.sh
を作ってgit pullとかサービスの再起動とか- アプリケーションのほうにはシンボリックリンクを設定
- NewRelicを入れた
- https://github.com/newrelic/go-agent/blob/master/README.md#integrations
- 普段つかってないのであんまり効率的な見方がわかってないけど、APM→Transactionsあたりをみて、遅いエンドポイントは問題あるはずなので、実装眺めてインデックス貼り忘れとかN+1とか実装がおかしいとか直した
- DBまわりを見直した
- インデックスが全部なかったので、愚直にインデックスをつけた
- WHEREとかORDERで指定されているフィールドをいい感じに設定
- N+1があることがわかったので、愚直にIN句とかJOIN句で解消
- fillXXXResponseがいろいろ詰まってた
- READ系でのトランザクションを消した
- あんまり効果はなかったかも
- インデックスが全部なかったので、愚直にインデックスをつけた
- livestream statisticsを改善した
- なかなかヘビーな処理だったので適当なテーブルを作ってランキングを楽に取れるようにした
- スコア寄与はあんまり高くなかったみたいなので放置してもよかったかもしれない
- 実際user statisticsはやってない
できなかったこと
- 実装
- DNSまわり
- PowerDNSなんもわからんけど
powerdns high performance
とかでググってスレッド増やしたりしたが追求はしてない - マニュアルには水責め攻撃あります、とあったのでこれの対策をするんだろうな〜と思ってたが全然手が出せなかった
- チームのみんなもあまり見れていない
- 他のDNSサーバなソフトウェアをいくつか見たけど載せ替えが大変すぎそうでだめだった
- こういうときにChatGPTつかえばいいのでは。。
- PowerDNSなんもわからんけど
- 複数台構成がんばってない
- 複数台構成の検証が全然できてない
- redisとかは今回はまあいいかと特に積極的にとりくまなかった
- DNSまわり
- ISUCON
- 5万点超えを見ていない
- 「最初に5万点を〜」というのがあったので、ここを目標にしたけれど、超えたベンチ結果を見てなかった
- 再起動試験
- 事前準備など
- デプロイ簡単にする君
- git pullでいいけれど、3台順番にやるのは面倒
- ローカルからgit pushあとにpullするのが面倒、Githubからpushされてほしい
- Githubでアップストリームをサーバ側にしてpushとかできるとは思うが、そうじゃない感
- etcとかどうするの
- 秘伝のタレとか
- デプロイ簡単にする君
- ベンチマーク後のデータをみる、dumpをとる
- diffがないものはDBに入れる必要がないかも
- ファイルやredisに書き出すとかならそこから流用できる
- データの偏りがあればキャッシュ戦略も考えられる
- 5万点超えを見ていない
- チーム
- TODO管理、優先度管理
- 役割・担当の分担
- 自主的にここやります!メインでやってたのはそれでもいいと思う
- スケジュール管理
- 終わる直前まででかい変更しまくってるのはだめだったと思う
追記 2023-11-27
スコアが公開されていた。
ISUCON13 受賞チームおよび全チームスコア : ISUCON公式Blog
最後1時間くらいはずっとベンチ失敗してたし、終了間近の変更も確認できないまま終わって、そのまま追試でも失敗だった。残念なり…