ぱすたけ日記

日記っぽいのを書きます。

#ISUCON 本戦初出場初failしてきた

予選の様子はこちら

というわけでISUCONにチーム学生自治として出場してきた。

結果は発表されている通りで fail という感じだった。

大体何をやったかはチームメイトのnona7くんが書いていたけど、一応書いておきます。

  • 開始前にドクペとお茶を飲んだ影響かとにかくトイレに行く回数が多かった
  • 言語についてはスムーズにRubyを使うことにしたけど、NodeJS実装もあったしちょっとは見ても良かった気がする。
  • 予選の時と同じくrack-lineprof を導入して計測する作戦で始めたが、セグフォして辛い感じだった。/data辺りで色々httpが走ってたりするからその辺りで何かあるんじゃないかとか適当に思ったけど、とりあえず諦めてまぁ/dataが遅いのだろうという気分になる
  • Rails生まれMongoDB育ちなので、PostgreSQLを見て困る。とりあえず、slow queryでも見るかと思ったけど、人生初psqlだったので色々手こずる。しかも、まぁ問題からもある程度は自明だったのだけど、特に顕著に遅いqueryはないという感じのことが分かる。
  • parallelというgemをuiuが入れたりして、この辺りでスコアが2200点になる*1
  • 1台のnginxでアクセスを受けてそれを自身も含めて3台のアプリケーションサーバに振り分けるようにする。
  • あとはworker_process数の調整をする。この辺で25000点くらいになるもここからは何も出来なくてスコアが変わらなくなる。
  • 何かキャッシュすれば変わるのではという気分だったものの、住所系はそんなに支配的ではなくて、天気API/dataのリクエストタイムの大方を占めていたのでなんとかしたいということになる
    • 支配的ではなかったものの、とりあえず手を出すという意味でも郵便番号→住所をキャッシュするとかはやっておけば良かった。Redisのインストールしたのに…
  • 天気APIをなんとかしたいキャッシュするかと思うも意外と変わるということで考え始める
    • 実はheaderを見てなんとか出来ないかと思って、Content-Lengthを見てみたりLast-modifiedがあるのも気付いてて、nonaと天気が3秒で変わるから比較して3秒以上立ってなかったら同じのを返すとかすれば良いのではとか言っていたのでその時にIf-modified-sinceに気付けていればなぁという感じ
  • トイレに行く途中でhttpsなアクセスポイントが不自然だからhttp2にしたらなんかなったりしないかなと思ったけど、トイレから帰ってくる時に脳内でいやまさかなぁと思ったけど、それもちょっと試したら良かった…
  • まぁ何はともあれ最後の3時間くらいは何も出来なくて、ラストで再起動チェックをしたつもりだったけど、そのあとにinit.d周りをを弄ったりしてから再起動チェックを指定なかったのでfailしてしまった・・・うううう

最後はとにかく諦めムードで(学生枠一位と6万点差あった)雑な銀の弾丸を色々考えてたけど、そんなことしてる暇があれば再起動テストをするべきだったと反省してる。

全体的にもっと色々手を動かして試していればもう少しスコアよく出来てたなという感じで反省しかない。

次出るとこがあればその辺はもっと意識していきたい。

出題の皆さん、運営の皆さんおつかれさまでした!!!!