カレーの恩返し

おいしいのでオススメ。

ISUCON7予選に参加しました

ISUCON7予選に参加しました。

その前にきちんと投票しました。
チャリで行ったので雨が目に染みてつらかった。

最終スコアは40088点で学生枠で本選に出場することができました。

github.com

github.com

の強い編入生2人と一緒に参加した。

アプリケーション改修担当として参加した。
バグ取りが終わらなかったためスコアに反映させることができなかった...悔しい。
一緒に参加した2人が優秀で良かった...

やったこと

セットアップ

  • show create table hoge; をslackで共有
  • SELECT * FROM hoge LIMIT 10; をslackで共有
  • myprofilerを入れる
    • myprofiler -user=rootmysqlに繋げなかったので困った。
  • kataribeを入れる
  • rack-lineprofを入れる

ほぼコピペのセットアップを終わった時点で1時間くらい経っていた。

アプリケーション改修

  • まずmyprofilerでスロークエリを探してみたものの、何も表示されなかったのでそんなもんなのかーと思いrack-lineprofで遅い行を探す。

    • GET /fetch が遅かったが、レギュレーションでスコア計算に入らないと書いてあったため無視。
    • その次にGET /messageが重そうだった&N+1があったのでこの辺を改修することに決めた。
  • 練習での経験*1よりmessageを全部redisに載せてみる作戦をとってみることに
    (これが完全に判断ミスだった)


他のメンバーはアプリケーションをごにょごにょしている間にiconを304で返せるようにほげほげしてくれていた。

詳しくはこちら

blog.ksswre.net

chigichan24.hatenablog.com

反省点

  • 影響範囲を考えて手をつけていなかった
    • 変更しながら後悔する羽目になった
    • channelごとのmessage数のカウンタをredisで実装とかは影響範囲が小さくある程度の効果が見込めたはず
  • N+1をきちんと潰してなかった
    • こちらの方が優先度は高いはず
  • そもそもredisに慣れていなくて時間がかかった
    • 鍛錬します

①N+1を潰す
②影響範囲の小さいところからredisに載せていく
の2つを確実にこなせるように本選まで練習したいと思う。

*1:pixiv isucon, ishocon1, isucon4でオンメモリ化させる判断がつかず点数が上がらなかった