予選の様子はこちら
というわけでISUCONにチーム学生自治として出場してきた。
チーム学生自治、京大ストライキを呼び掛けた中核派のキャッチコピーと似てるからチーム名が公序良俗に反してると思われないかが心配になってきた
— マジカルペンネくん🍝 (@pastak) 2015年10月27日
結果は発表されている通りで 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万点差あった)雑な銀の弾丸を色々考えてたけど、そんなことしてる暇があれば再起動テストをするべきだったと反省してる。
厳しい感じだから「得点横取りRuby早押しクイズ」発生して欲しいということを言い始めた #isucon
— マジカルペンネくん🍝 (@pastak) 2015年10月31日
ボーナスポイント100万点を獲得する方法を考えている
— マジカルペンネくん🍝 (@pastak) 2015年10月31日
さっきから「今すぐ、『〜してくれる君』が実装されて高速に動作すれば勝てる」という発言を繰り返しています #ISUCON
— マジカルペンネくん🍝 (@pastak) 2015年10月31日
全体的にもっと色々手を動かして試していればもう少しスコアよく出来てたなという感じで反省しかない。
次出るとこがあればその辺はもっと意識していきたい。
出題の皆さん、運営の皆さんおつかれさまでした!!!!