今年も ISUCON の予選に挑戦した。
また転職したので、社内でメン募を行って、エントリした。
チーム名は ウデムシマニア。
今回は他の2人が初参戦だったため、9月末の土曜日に会社に集まって事前練習を一度行った。
予選の内容は、isubata なるチャットサービスを複数台構成で最適化するものだった。
メンバーの役割分担は、SmartHRのテックブログに書いてある感じで作業をした。
ログをプロファイルしたり、ベンチマークのログから、画像の配信がネックであることが読み取れたので、画像を MySQLから取り出して、
各サーバにファイルとしておいて nginx でserve してということをしたりして、スコアはそこそこ伸びたものの、画像を304で返すことができずに終了してまった。
画像をnginx で返すことはできていたものの、初期のファイルの書き出しを /initilize で行っていたため、各サーバのファイルのtimestampがバラバラかつ、
ベンチマークがアップロードするファイルを、各サーバにscp する際も timestamp のコピーを忘れたので、cacheが全く効いていなかった...
複数台構成にした際に、画像を一つの サーバから配信する方法というのが、 実務ではS3に頼り切ってるため、全く手が出せなかったのも大きかった。
(goofys で S3 mountしちゃうとか考えたけど、それは、明らかにレギュレーション違反だったので、、、)
NFSは遅いしそれ以外でというのが全く思い浮かばず、、
予選突破された方のブログを読むと、nginx でやったり、WebDAVでやったり、 varnish でやったりと、やり方はいくらでもあるようだったので、明らかに実力不足だった。
あと、puma を unixsocket で 起動したものの、 nginx 側の設定がうまく行かず、結局 port を listen する方式のままだったのが悔やまれる。。
また、ベンチマークの結果のログメッセージをうまく読み取れておらず*1、それに引きづられてしまって、時間を使ってしまった。
こまかな作業ログは、こちら GitHub - meganemura/isucon7
ただし、nginx の設定をrepository に入れ忘れてる。。
スコアのログ
time | score |
---|---|
2017-10-22T13:07:23 | 3971 |
2017-10-22T13:13:14 | 2879 |
2017-10-22T13:21:50 | 3965 |
2017-10-22T14:51:32 | 5837 |
2017-10-22T15:23:30 | 5619 |
2017-10-22T15:37:54 | 5843 |
2017-10-22T15:45:28 | 6068 |
2017-10-22T15:47:19 | 3948 |
2017-10-22T15:52:07 | 6081 |
2017-10-22T15:59:50 | 10666 |
2017-10-22T16:11:26 | 18030 |
2017-10-22T16:14:56 | 13780 |
2017-10-22T16:36:34 | 22387 |
2017-10-22T16:43:15 | 22635 |
2017-10-22T16:46:38 | 23097 |
2017-10-22T16:52:13 | 24015 |
2017-10-22T17:02:05 | 23295 |
2017-10-22T17:10:27 | 25863 |
2017-10-22T17:11:39 | 29664 |
2017-10-22T17:21:13 | 28363 |
2017-10-22T17:25:18 | 26061 |
2017-10-22T17:35:08 | 40704 |
2017-10-22T17:50:36 | 39790 |
2017-10-22T17:53:05 | 32632 |
2017-10-22T18:02:46 | 31570 |
2017-10-22T18:04:44 | 34949 |
2017-10-22T18:08:33 | 31768 |
2017-10-22T18:10:40 | 35023 |
2017-10-22T18:12:13 | 33783 |
2017-10-22T18:17:32 | 18398 |
2017-10-22T18:25:05 | 23806 |
2017-10-22T18:30:03 | 20030 |
2017-10-22T18:34:14 | 37193 |
2017-10-22T18:37:00 | 36867 |
2017-10-22T18:41:14 | 30252 |
2017-10-22T19:05:42 | 33042 |
2017-10-22T19:11:29 | 35268 |
2017-10-22T19:14:03 | 33025 |
2017-10-22T19:23:54 | 36749 |
2017-10-22T19:26:25 | 41020 |
2017-10-22T19:31:08 | 38828 |
2017-10-22T19:37:23 | 40640 |
2017-10-22T19:47:06 | 34930 |
2017-10-22T19:51:07 | 41707 |
2017-10-22T19:52:53 | 54367 |
2017-10-22T19:55:38 | 45560 |
2017-10-22T20:03:02 | 52380 |
2017-10-22T20:09:49 | 49159 |
2017-10-22T20:15:11 | 47085 |
2017-10-22T20:17:06 | 36081 |
2017-10-22T20:18:40 | 39018 |
2017-10-22T20:21:15 | 52990 |
2017-10-22T20:23:55 | 41478 |
2017-10-22T20:25:18 | 44206 |
2017-10-22T20:32:40 | 45805 |
2017-10-22T20:38:38 | 55714 |
2017-10-22T20:42:23 | 39386 |
2017-10-22T20:43:40 | 45687 |
2017-10-22T20:47:03 | 42989 |
2017-10-22T20:48:23 | 47609 |
2017-10-22T20:49:36 | 39142 |
2017-10-22T20:51:03 | 43979 |
2017-10-22T20:55:37 | 37914 |
2017-10-22T20:58:21 | 41095 |
余談
予選中にオフィスの扉が開いたと思ったら、社長がやってきた。
#500strong のイベントあがりにオフィスよったら #isucon 参加チームが頑張ってた https://t.co/MTBrY1aYAh pic.twitter.com/rJsiMn0fTz
— 宮田 昇始 (@miyasho88) October 22, 2017
予選のスコアがいまいち伸びておらず、社長の相手を無下にしていたら、寂しそうに蒙古タンメン中本に行くと言って去っていきました...
おわり
今年も、力及ばず予選敗退になってしまったけど、チームメンバからは、絶対来年も出たいという気持ちを得られたので、次は予選突破したい!
予選で複数台構成の問題をつくったり、そもそものサーバのセットアップなど、運営の皆様、ありがとうございました!
*1:当日レギュレーションの読み込み不足