256bitの殺人メニュー

インフラエンジニアだったソリューションアーキテクトなくわののブログ。こちらのBlogは個人の意見となっていて会社とは全く関係ありません。お約束です。[twitter:@kuwa_tw]めんどくさがりが重い腰を上げて何かをアウトプットすることにどれほどの意味があるのかを試してみたいブログでもある。

#isucon 4 に初参加してラッキーパンチで失格になってきました

なんで勝負!!!って盛り上がっちゃうんでしょうね。
はい、乙カレー様です。くわのです。


ISUCON4に初参戦してきました!
ISUCON毎回みてて面白そうだなーと思っていたんですがなんとなく気が引けたり予定が合わなかったりで出れてなかったのですが、会社でTOTECに参加して6位になったりしてちょっと悔しかったり面白かったりしてきたので今回初参加してきました。
大分記憶が薄くなってしまったので思い出しつつ書いていきます。


@, @の3人メンバーででてきました。
言語はNode.jsです。

チームでやったこと(覚えてる限り)

とりあえずサーバ環境を見たり、デフォルト状態のRubyのベンチ結果、デフォルトのNode.jsの結果までみて、Nginxのログと、general_log出したりしてクエリ確認してみる。DBはusersとlogin_logしかテーブル無い。

インデックス

login_logに、

  • ip, succeededの複合インデックス
  • user_id, succeeded, idの複合インデックス

を入れてみたタイミングでだいたいMySQLはまあいいんじゃねって感じになった。
ので、あとは様子見つつアプリの確認などしつつmy.cnfやサーバのリソース確認していた。

MySQLバージョンアップ

DBが大したことなかったので5.7にあげてみたけどほぼ意味なかった。

静的ファイル切り出し

Nginx側で静的ファイルの切り出しをして、Nginxで返すように変更。

tmpfs化

MySQLのデータ領域のtmpfs化

OSパラメータ系
  • my.cnf
  • nginx.conf
  • kernelパラメータ

の変更

ハッシュ計算のスキップ

DBにハッシュ値を入れた

セッションのキャッシュ化

memcached導入

この段階の点数

30000超えてる位だったと思う。

ラッキーパンチ

17時半くらいから
memcachedにセッションキャッシュ入れたりしつつ平行して@さんがbenchmakerの最適値を見たりしてたのですが、その中で期せずしてこれに引っかかって不当に高い点になっていたというのがありました。
その時はなんか実行が長いなとは思ってたのですが、元々1分で終わる前提っていう仕様をしらなかったのもあって、そうかーなんかすげーけどとりあえず時間も無いしそれはそれでやってこうってなりまして。その結果5位に入ってしまいました。確か62000くらいだったと思います。

からの失格

それでもジャッジ的に本戦出れる感じだったんですが、ここをみていただけるとわかるように

「もんご博士(RX有〼)」の7チームは、サーバ再起動後に、再起動前と /report の出力内容が変わってしまっていたり、 /report 自体が動作しなかったりすることが確認され、失格といたしました。

「もんご博士(RX有〼)」の7チームは、サーバ再起動後に、再起動前と /report の出力内容が変わってしまっていたり、 /report 自体が動作しなかったりすることが確認され、失格といたしました。

「もんご博士(RX有〼)」の7チームは、サーバ再起動後に、再起動前と /report の出力内容が変わってしまっていたり、 /report 自体が動作しなかったりすることが確認され、失格といたしました。

皆さんわかってますよね。tmpfs入れてちゃんとデータの保存ができるようになってなかったのです、、、かなしい。
そしてラッキーパンチでもくやしい。

benchmaker2での追試

32000でした。これでは本戦出れないですのでまあ良かったかなーって清々しい気分です。いや、嘘です。ちょっとだけくやしい。

教訓

障害対応じゃないんだからもっと攻めるべきだったなーというのは反省しています。
言い訳すると初めての参加だったので自由度が把握できてなかった部分はあるかもしれない。。。(言い訳すんな)

  • 判断は早く、かつ競技の面もあるので大胆さも大事
  • 役割わけるのもあるだけど全員コードを最初に読み込んでおく事
  • レギュレーションは読み込んでチームメンバーで共有しておく <- イマココ

終わってみて

集中して疲れたけど楽しいいいいいいいいいいいいいいいいいいいいいいいいいいいん!って感じだった。
実際参加してみてから皆さんのブログを読ませていただいたりして大変刺激になりました。

今回は残念なラッキーパンチだったので次回はカッチリ本戦行ったるマン。

お疲れ様でした

ご迷惑おかけした @さんはじめ運営の方々本当にお疲れ様でした!
楽しいISUCONありがとうございます!
本選出場者の方々も頑張ってください!

にしても

ばばさんにも言われたけどここはネタ的にもワンチャンMongoDBだったよなー。って思わなくもないですw


ではではー三(卍 〓ω〓))卍