ISUCON7 に参加してきた

結論

  • tagomoris さん、joker1007 さんと共に、意気揚々と参加したものの、敗退した
  • モリスさんのレポート -> ISUCON7予選で敗退した – たごもりすメモ
  • joker さんのレポート -> 如何にしてAsakusaから来た面々はISUCON7の予選に敗北したのか – joker1007’s diary
  • yancya がやっていたこと

  • DB のインデックスのチェック
  • 各 SQL の EXPLAIN をチェック
  • MySQL の設定見直し
  • アプリケーション内の N+1 クエリの解消
  • 結局、あんまりコミットできていなくて、N+1 も解消漏れがあったのを最後の方で気づいて着手したものの、書き終わったのは Time up 後だった

    競技中の様子

  • 配られたサーバーへ ssh で接続しに行くときに、全員で一気に繋ぎに行って、何回か認証ミスったら ban されてしまって、めっちゃワタワタしてた。予め GitHub のチーム用リポジトリの Wiki に公開鍵を集めて「最初の接続はシュッとノータイムでやっちゃおうね」って言ってただけに、ここで出鼻をくじかれて手に汗をかき始めた
  • ほぼ初手で「画像を DB に BLOB で入れてんのは無理でしょ」となって、モリスさんが「画像は Nginx でいいかんじに配信するようにするので任せて」といってサッと実現していた(が、この時の作業方法が敗因になるとは、このとき誰も思わなかったのであった)
  • joker さんは「未読管理は RDB じゃなくて Redis でしょうね。任せろ」という感じで未読管理部分の引きはがしをバリバリやっていた
  • わしは一通りインデックスのチェックをしていたけど、結局インデックスが足りなかったのは基本的には2箇所くらいだったので、ぺぺっとインデックスを足したりしていた。そのあと、N+1 クエリを解消する為に「なんでも1SQLでやろうとするマン」をやっていた
  • 敗因

    モリスさんとジョーカーさんの blog の方に詳細に書いてあるけど、アイコンへのリクエストに対して適切に(適切に、とは) 304 を返せなくて回線が詰まってしまったため、ベンチマーカーの負荷レベルが上がりきらなくて、スコアも上がらなかったという事。最終的にスコアは 90,000 〜 110,000 くらいにとどまった

    反省

    手が遅かった

    振り返ってみると、わしがやってたことって遅くとも最初の3〜4時間で終えてないといけないくらいの量だったので、単純に手が遅いなと思った。他のメンバーのコミットで手元の環境が動かなくなってしまったりしてハマったりしてたけど、なんか場がピリピリしてたので気軽に「助けて」と言いづらかったのが結構辛かった

    WEB の事に疎かった

    競技が終わって、他のチームから画像の件について「こういうことだったんだよ」って言われれば「あー」とはなるんだけど、普段、そんなにタイトな WEB サービスを運営していないので、そういうことに自ら気づくという力が本当に無いなと実感した

    やんちゃが足りなかった

    なんかベンチマークを実行するときに「負荷をかけるサーバーを3つの中からいくつでも選択して下さい」って書いてあるのを見て「ということはロードバランサーとかでアクセスするのかな」と思ったんだけど、特に他のメンバーにその話題を振ったりしなかった。なんか忙しそうだったし。結果論でしか無いけど、もしこんな感じの雑談をしていたら「ロードバランサーね、うーん、あー、CDN!?」みたいになったかもしれない

    画像を各サーバーに配るときの話をしていたとき「rsync とかでやるのかな」と思ったんだけど言ってなくて、もし言ってたら「あー、timestamp あー」ってなったかもしれない

    ベンチマークの実行が結構サクサクできて快適だったし、何の用も無いのに適当にバンバン実行して、たまにふざけてサーバーを1つだけ選択してベンチを流してみたりしてみれば良かった。これも結果論だけど、もしも1サーバーだけを対象に実行していたら、画像ファイルが1種類につき1ファイルしかないので、304 をモリモリ返す事が出来て、3台の時よりもスコアが上がったかもしれない。そこで「あー?あー!」って気づけたかもしれなかった

    チームに誘われたとき「普段 Asakusa.rb で一緒だし、慣れたメンバーで作業するのが良いんだよ。だから来て」と言われて参加したのに、実際競技が始まったら、借りてきた猫のようになってしまって「少しでも、わしができる SQL について貢献しよう」みたいな感じで小さくまとまってしまった。6時間経過時点くらいで「ここらで30分くらいビール休憩しようぜー」とか言えれば、何かが変わったかもしれないとか、色々考えてしまう

    思ったことをバンバン口に出していくことが必要だったと、悔やんでも悔やみきれない。これは開発現場に限らず、今までの人生、いろんな局面を振り返ってきて、散々身に染みてきたことのはずだったのに生かせていなくて辛い。「思ったことをバンバン口に出していく」これをさらに心に刻む yancya であった

    しめくくり

    ISUCON 運営の皆様、大変勉強になりました。良い機会をつくって頂き、ありがとうございました

    tagomoris さん、joker1007 さん、大変楽しい会に誘って頂き、ありがとうございました。楽しかったし、勉強になりました


    カテゴリー: 未分類 パーマリンク

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください