isucon.net
Iikanji ni Speed Up Contest、通称「ISUCON」に出場してきました。
今回が初めての参加になります。
都内某所コワーキングスペース(弊社オフィス)にて、社内でチームを組んで挑みました。
言語はPHPを選択しました。Node.jsは僕しか触れなかったので。とはいえ、Node.jsは直前で中止になっていたのでPHPを選択しておいて正解でした…。
チームメンバーの@petoが書いた記事はこちらです。
pe10.hatenablog.com
担当
3人いたのでそれぞれ
という分担をし、僕はアプリケーションを担当しました。
僕がやったことはこんな感じ。
チームとしては
- MysqlのSlow LogからプロファイリングしIndexを貼った
- Mysql設定チューニング
- Nginxチューニング
こんな感じでしょうか。
結果
ベンチマークの結果を逆時系列で出しました。ところどころFAILが出ているのは、「タマキ」と呼ばれるなぞのバグのせいかと。どのチームも苦しめられたみたいですw
Score History
timestamp score
17:40:52 5268
17:37:37 5824
17:35:33 20 FAIL:
17:30:09 4316
17:12:11 7032
17:04:05 4192
16:52:57 9831
16:46:35 9786
16:37:40 9034
16:28:24 9785
16:19:57 9421
16:10:29 9340
16:04:27 6301
15:58:56 6231
15:54:48 0 FAIL:
15:52:23 6018
15:44:16 5918
15:39:55 5212
15:32:07 4675
15:19:51 3318
15:11:39 6606
15:00:24 6586
14:46:04 6639
14:40:05 1279
14:31:33 1935
14:21:02 2166
14:17:09 0 FAIL:
14:04:18 812
13:56:11 1230
13:49:03 1229
13:41:38 1259
13:33:47 20 FAIL:
13:30:13 1517
13:23:44 20 FAIL:
13:10:08 1430
13:01:00 992
12:53:32 1064
12:33:47 910
12:16:10 896
12:07:42 838
11:59:58 743
11:41:07 722
11:37:21 0 FAIL:
11:31:58 697
10:43:24 68
10:34:45 0 FAIL:
最高スコアはなんと9831!最高スコアだけで見れば全271チーム中の上位50チームには入れてるんじゃないかなあと思います。
ISUCON5 本選出場者決定のお知らせ : ISUCON公式Blog
が、見ての通り途中で何度かスコアが大きく落ちています。
実は再起動のたびにスコアが半分ほどになってしまったのです。
原因を探っていたのですが、どうしてもわからず、結果として低いスコアになってしまいました…
おそらくですが、innodb_buffer_poolをディスク上に書き込んでおらず、再起動のたびにメモリから飛んでしまっていたためかと…。
終わってから気付き、非常に残念です…。
感想
実は社内で週2でISUCON会という勉強会をやっていました。若手エンジニアの集まりで、過去のISUCON問題を練習台として模索していくような会でした。そのおかげもあって当日いろんなことができたのかと。
ISUCON3,4と比べ、今回はNginxよりもMysqlとアプリケーションに比重が置かれているなと感じました。アプリケーションのコード量も比べ物にならないほどでしたし、テーブル数もこれまでの数倍はありました。そのおかげでアプリケーション担当の自分は忙しかったです…あと3時間はほしい…。
WEB業界に入ってまだ半年ほどですが、最終結果はよくなかったにせよ、最高スコアでここまで入れたのは驚きました。やはり勉強会のおかげもあるかと思いますが、ちょっと自信がつきました。
勉強会も普段やらないチューニングという分野で楽しかったですし、予選も疲れましたが楽しかったです。来年もまたやりたいなあ。ぜひNodeで!