ISUCON練習実況ログ 2024/10/14

ISUCON精進鯖で人を募って1時間バトル、1時間感想戦というのでやってみた。
今回は目新しいことはしてないので軽めに書く。

20:00 開始

初回ベンチ

20:01 スコア 3358

livestream_tags にインデックス

livestream_tags テーブルの livestream_id にインデックスを貼った。

20:13 スコア 3934

icons の改善

iconsを静的ファイルから返すようにした。last inserted idはグローバル変数として持つ。304対応はしない。

20:31 スコア 4123

ADMIN PREPARE の改善

conf.InterpolateParams = true を追加

20:36 スコア 6664

themes の改善

themes テーブルの user_id にインデックスを貼った。

20:41 スコア 7723

SELECT FROM users, livestreams, livecomments の改善

users を消す

20:47 スコア 8532

NGワード改善

クエリが複雑になっているのを、単純にcommentがNG wordに一致するなら消す方式に変更

20:55 スコア 7945

livecomments にインデックス

livecomments テーブルの livestream_id にインデックスを貼った。

20:59 スコア 9521

メモ

  • 1時間で9回ベンチマーカーを回せたのでよかった
  • ちょっと覚えゲーになっている面があるが、おかげでインデックスを貼るときとかのコマンドをソラで打てるようになった。
  • logrotate を導入してログからtailする手間をなくしたい
  • トランザクションで無駄に commit してる箇所の変更は結構コードの変更が必要
  • 基本はスロ=クエリの1番上から潰すが、 COMMIT\G についてはいったん無視するのもあり
  • 今回僕はhtop→DB or APPを判断→pt-query-digestという流れで進めているが、alpもプロファイラも見て総合的にボトルネックを毎回判断すると良い
    • alpはざっくりとしか分からず、そこからpt-query-digestも見てボトルネックを特定する
  • 複数台構成は早い段階でDB, APP1台ずつをやってみてもいいかも
  • pprotein 使ってみる