glep わかんないけど ISUCON に参加してみた
glep( ^ω^)ワカンナイオ
ようこそ、ISUCONへ
ISUCON13に参加してみました。
メンバーは以下の通り。
- インフラ強強エンジニア(新卒1年目 Go書ける)
- インフラ強強エンジニア(新卒1年目 Go書ける)
- ワイ(ボトルネック PHPしかわかんない)
結果、がんばりました( ^ω^)
はじめに
なにもしてない、むしろ何もできなかった( ^ω^)ビエェッ
インフラ強強エンジニア2人が必要なツールをすべてセットアップしてくれた
ワイは873
ポート開けた(だけ)
役割分担
ワイはGo読めない( ^ω^)
インフラもわかんない( ^ω^)
なので、DB担当したンゴ
- 1人目:全体監視、指示出し、Goでボトルネック調査と解消
- 2人目:GoとDB調査してボトルネック解消
- ワイ :DB調査(というかインデックス貼り貼りするだけ)
(ワイの)具体的な作業の流れ
- ベンチマーク回す
- pt-query-digest の結果見て遅いクエリを確認
- EXPLAINしてみる
- インデックス貼り貼り
- ベンチマーク回す(無限ループ)
ペタペタしました( ^ω^)
やっちまったこと
反映されたか確認しなかった
ベンチマーク走らしたらDBリセットされて、変更が反映されていると思った
けど違った( ^ω^)アー
TRUNCATE
はされていたが、DROP
& CREATE
テーブルはされておらず、エラーが出なかったので勝手に反映されたものだと思いこんでいた・・・
変更されたかどうかは、ちゃんとチェックしよう(戒め)
一気に貼りすぎた
片っ端から外部キーを貼った、これは良くなかった
エラーが解消できず、一旦元に戻して一つずつ変更して確認していくことになった
最初から1つずつ変更して確認するという流れを取るべきだった
テーブルを増やした後処理が漏れていた
別箇所のチューニングをした際にテーブルを増やした
CREATE
文と初期データのINSERT
、DROP
は書いたが、データを初期化するためのDELETE
とAUTO INCREMENT
のリセット処理が漏れていた
これが原因で、他の人の修正結果が確認できず、せっかくのチューニングがポシャった( ^ω^)スマネェ...
他にやったこと
大半のチューニングやセットアップ、データの同期処理などは強強メンバーが全部やってくれた( ^ω^)マジアリガテェ
なのでワイはインデックスぺたぺたしたのと、Goの処理のチューニングをちょいお手伝いしたぐらい
※ といっても更新処理と取得のUPDATE
文とSELECT
文を書いたぐらい
あとは、データ初期化でTRUNCATE
していた箇所を、DELETE
に変えたぐらい
外部キーを貼った都合上、DELETE
のほうが良かった
結果
楽しかった( ^ω^)
できないことは多く、完全なボトルネックを演じていたが、リベンジしなければならんという気に捺せられた
もっと詳しくなりたいンゴ( ^ω^)
Discussion