ISUCON 4 予選に参加した - チーム「ヤキトリ缶(タレ)」

昨年に引き続き、今年も参加してみた。 メンバーも昨年と同じく、@hisayosh@sechiro。昨年のチーム名は「勝浦タンタンメン」でした。

予選終了時のスコアは 30000 弱。最終スコアは benchmarker v2 で計測したものになるということですが、予選突破は難しい気がします。

やったこと

言語は Python

まずは、調査用のインスタンスを立ち上げ、アプリの仕様とベンチマークの動作を調べていました。
nginx にログを仕掛け、どんなリクエストを送っているか、そのリクエストの処理時間がどれくらいかかっているのかを見て、ベンチマークが単調な動きをしていること、そして、アプリが単純な認証しか機能がなかったこと。

log_format  perflog  '[$time_local] "$request" $request_length '
                     '$status $body_bytes_sent $request_time';
access_log /var/log/nginx/access.log perflog;

それからは、Redis を使うためにサーバーとクライアントライブラリをインストールし、準備を始める。おおまかに ip と users キャッシュすることを目標として、まずは ip から始めた。

ip 判定は Redis キャッシュから判定するように実装し、初期データを登録する python スクリプトを作成する。
users 側のデータ設計を考え、これも初期データを登録する python スクリプトの準備に取りかかる。

users の実装途中だったが、ip 判定用のデータができたところで、初期データの準備ができので、そちらを継続することに。
しかし、実際に試してみたところ Fail するように。ログインの判定がうまくいかなくなってしまう。

調べたが、原因をつかめず、時間切れとなった。

振り返ってみて

チーム全体では前回と比べ、やろうとしていたことに対して、できたことが増えたと思う。戦略の立て方は良かったと思う。
ただ、自分のタスクがうまくいかなかったのはかなりの痛手だった。 実装した部分ではまるとその解決に時間がかかる。事前準備でもっと Python に時間を使えていたらと思う。案があるのに実装できなかったのが悔しい。
もっと他に方法はないかと考える余裕くらいは持てたら良かったと。

しかしながら、楽しかった!準備をしている時間を含めてひさしぶりに楽しい時間を過ごした気がした。 やはり、こういう環境に身を置けるのが一番いいのだと、改めて思った。

参加チームが 200 弱という規模になり、運営やそれにかかる判断が難しいとは思いますが、運営スタッフのみなさまおつかれさまでした!!