ISUCON7 予選敗退した #isucon

今年も 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

f:id:tknzk:20171023204340p:plain

終結


こんな感じでベストスコアとしては、 55714 となりました。
ただ、再起動時に redis が起動してなかった模様で、予選結果としては、 fail ということが最終結果でした。。。

余談

予選中にオフィスの扉が開いたと思ったら、社長がやってきた。

予選のスコアがいまいち伸びておらず、社長の相手を無下にしていたら、寂しそうに蒙古タンメン中本に行くと言って去っていきました...

おわり

今年も、力及ばず予選敗退になってしまったけど、チームメンバからは、絶対来年も出たいという気持ちを得られたので、次は予選突破したい!
予選で複数台構成の問題をつくったり、そもそものサーバのセットアップなど、運営の皆様、ありがとうございました!


isucon.net

*1:当日レギュレーションの読み込み不足