ISUCON4の予選に出た #isucon
ISUCON4 の予選に出た。
今回は、去年のチームメンバーのid:urapico とフロントエンドエンジニアのnkns の3名体制で臨んだ。
セットアップ
- テーブルを移動して、テレビをセカンドディスプレイとして使うセッティング
本日のISUCON会場 #isucon pic.twitter.com/DWxOsEfEWH
— ルミエ (@lumie007) 2014, 9月 27
集合
- 9:30 idobataに集合
開始
- 10:00 スタート
- 公開されたAMI でEC2インスタンスを起動
- 各自ssh でログインしてもらう
- id:urapico がソースをbitbucketにpush
- PHPに切り替える
- 502 BadGateway
- 時間がもったいないということでRubyでいく宣言
- ざっくりソースを読む
- DBへのアクセスをどう減らすかだねっていう話をする
作戦会議
- 役割分担を決める
- インフラを自分がみる
- アプリ側をurapicoとnknsに担当してもらう
PHPに変更
改修内容
- my.cnf を改修
- mysql slowlog を確認
- index を追加
- users table にlast_logined_at, last_logined_ipを追加
- mypageで参照される 最終ログイン時間、最終ログインIPをlogin_log を見ないように改修
- redis, phpredis 導入
- banned_ip, blocked_user をredisにキャッシュ
- last_logined_ip の部分のチェックでエラーとなったため、チェックロジックを妄想
- 一つ前のlogined_ip を持ってる必要があるとふんで改修
- エラー除去
- passwordのhash 計算の部分にcacheを導入
結果
- デフォルトスコア 1300ぐらいから8000ぐらいにはアップできた
- 惨敗
感想
- 上位スコアには5~10倍の差を付けられていて大変厳しい現実・・
- benchmarkツールのバグ等もありながら、運営の皆様お疲れ様です。ありがとうございます!!
- 着実に負荷部分の実装をがりっと書き換えるもしくは飛び道具を持つということができないと厳しいなあ
- ともあれ、チームで参加できたし、勉強になったのでよかった!
運営の皆様、ありがとうござました!