2015/09/30 追記

AMIの使用方法部分を一部変更しました

  • -

ISUCON3 本選で使用したアプリ、ベンチマークのソースコードと、お手軽にお試しいただけるAMI (Amazon Machine Image)が準備できましたのでお知らせです。

ソースコードはGitHub上で公開しています。 https://github.com/kayac/isucon3

AMI-id は ami-25046324 です。Tokyoリージョンで isucon3-final で検索しても見つかるかと思います。

なお、本選のお題の性質的に仮想化方式が HVM でないと初期状態での性能が出ずにベンチマークが通らないため、提供されるAMIから起動できるインスタンスタイプは m3.xlarge, m3.2xlarge などの HVM 対応タイプのみです。インスタンス費用にはご注意ください。

AMIの使用方法

AMI-id ami-25046324 からインスタンスを起動してください。起動直後の状態ではライセンスの関係上、出題に使用した画像データとデータベース内容が含まれていないため、まずそれをセットアップする必要があります。

# su - isucon
$ cd isucon3/final/bench
$ git fetch
$ git merge origin/master
$ ./prepare-images.sh
$ ./init.sh

画像データをダウンロードして出題に利用できる形態に加工するため、少々時間が掛かります。 その後、Supervisord を再起動すると Perl 実装が起動した本選開始時点の1台目のサーバの状態になります。

$ sudo service supervisord restart

インスタンスのグローバルIPアドレスに対して http://[ip-address]/ で接続すると、テスト用の HTML + JavaScript での画面が表示されるはずです。

各言語版の実行方法は、 /home/isucon/webapp/{perl,ruby,python,nodejs,php,go} の各ディレクトリ内の README.md を参照してください。

ベンチマーク実行方法

$ cd isucon3/final/bench
$ carton exec perl bench.pl -d /home/isucon/image_source http://127.0.0.1/

ベンチマークスクリプトのオプションは README.md に記載されています。最低限、アップロードに使用する画像が入ったディレクトリを指定する -d と、対象URL http://127.0.0.1/ の指定が必要です。他のホストに対してベンチマークを実行する場合は、http://127.0.0.1/ の部分を対象ホストに変更してください。

他には -w [workload] -t [seconds] も指定可能です。競技中は -t 60 (デフォルト)、最終計測では -t 180 で実行されています。

本選の初期状態ではおおよそ1800点前後のスコアでした(ベンチマークが別ホストから実行されています)。AMI を m3.xlarge で起動すると、同一ホストでベンチマークを実行して2000〜2200点程度のスコアになるようです。

CentOS-6 環境で実行する方法

AWSだけではなく、さくらのクラウドなど CentOS-6 を利用できる環境であれば、リポジトリに含まれている Chef cookbook を使用することで環境を設定することが可能です。

既存の環境で実行すると iptables, MySQL などを置き換えてしまいますのでクリーンな状態から実行するようご注意ください。

# git checkout https://github.com/kayac/isucon3.git
# cd isucon3/final/chef
# ./setup-chef.sh
# chef-solo -c solo.rb -j nodes/isucon3.json

作成される isucon ユーザはパスワード未設定、sudoers に登録がないため、適宜 visudo を実行するなどしてください。 これで提供 AMI とほぼ同様の環境になりますので、以降の初期データ用意などは上記 AMI の使用方法と同様です。

注意事項

インスタンスの実行に掛かる費用は、インスタンスを起動したアカウントに請求されます。運営では一切関知しませんのでご注意ください。