ローカル環境でISUCON9予選のアプリケーションとベンチマーカーはGoとMySQLとDockerがあれば、Macなどローカル環境で動かすことができます。
makeを実行するとDocker コンテナの中で初期データの作成を行い、
パスワードの生成があるため、時間がかかります。
ファイルは github releaseからダウンロードできます。1.5GB程度のファイルが2つとなりますので、回線状況のよいところでのダウンロードをおすすめします。
https://github.com/isucon/isucon9-qualify/releases
初期画像データダウンロード
ベンチマーク用画像データダウンロード
mysqlのポート、ユーザとパスワードは環境に合わせて指定してください。
初期化はinit.shを実行します。
環境変数によってMySQLのホストやポート番号を変更できます。詳しくはinit.shの中をご覧ください。
Goのバージョンは1.12以上で確認しています。
この状態で、ブラウザで http://localhost:8000/ をみるとISUCARIのログイン画面がでてくるはずです。
MySQLのホストやポート番号を変更する場合は、
payment service、shipment service の起動が必要です。
まず、各サービスをbuildします。
payment service、shipment service とベンチマーカーのバイナリができます。
それぞれ別ターミナルにて、
port 5555でpaymentが
port 7000 で shipmentが起動します。
これでISUCARIが使えるようになるはずです。
アプリケーションのみが起動していることを確認したら
とすると、initializeのフェーズからベンチマークが動き始めます。
ベンチマーカーとアプリケーションを別ホストで動かす場合は、benchmarkerの起動時にURLを設定する必要があります。詳しくは
参考までに MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports) Intel Core i5 4 CPU モデルでの初期スコアは
これぐらいになりました。httpsでの通信がないためか予選時よりスコアは高くなっています。
なお上記の環境でベンチマークを実行すると、ファンがうねり、バッテリーが1-2%減ります。用法用量を気をつけて実行してください。よいスコア出ましたら、以下のissueに実行した環境と変更点など報告してもらえると、嬉しいです。
https://github.com/isucon/isucon9-qualify/issues/569
どうぞお試しください。
ソースコードの取得
まず、ソースコード一式をもってきます$ go get -d github.com/isucon/isucon9-qualify
$ cd $GOPATH/src/github.com/isucon/isucon9-qualify
初期データの作成
ベンチマーカー、アプリケーション両方が使う初期データの生成をします。$ cd initial-data
$ make
makeを実行するとDocker コンテナの中で初期データの作成を行い、
initial-data/resultに結果が出力され、
webapp/sql以下へのコピーも行われます。
パスワードの生成があるため、時間がかかります。
画像データの展開
初期データの画像とベンチマーカーが使う画像をダウンロードする必要があります。ファイルは github releaseからダウンロードできます。1.5GB程度のファイルが2つとなりますので、回線状況のよいところでのダウンロードをおすすめします。
https://github.com/isucon/isucon9-qualify/releases
初期画像データダウンロード
$ cd webapp/public
GitHub releases から initial.zip をダウンロード
$ unzip initial.zip
$ rm -rf upload
$ mv v3_initial_data upload
ベンチマーク用画像データダウンロード
$ cd initial-data
GitHub releases から bench1.zip をダウンロード
$ unzip bench1.zip
$ rm -rf images
$ mv v3_bench1 images
データベースの作成と初期化
isucariデータベースとユーザの作成をします。$ cd webapp/sql
$ cat 00_create_database.sql | mysql
mysqlのポート、ユーザとパスワードは環境に合わせて指定してください。
初期化はinit.shを実行します。
$ cd webapp/sql
$ ./init.sh
環境変数によってMySQLのホストやポート番号を変更できます。詳しくはinit.shの中をご覧ください。
アプリケーションの実行
Goの参考実装を起動してみます。Goのバージョンは1.12以上で確認しています。
$ cd webapp/go
$ GO111MODULE=on go run api.go main.go
この状態で、ブラウザで http://localhost:8000/ をみるとISUCARIのログイン画面がでてくるはずです。
MySQLのホストやポート番号を変更する場合は、
webapp/sql/init.shを参考に環境変数を指定してください。試せるログインユーザは
docs/manual.mdに書かれています。
外部サービスの起動
アプリケーションは起動してますが、外部サービスがないため、購入時などにエラーになります。payment service、shipment service の起動が必要です。
まず、各サービスをbuildします。
$ cd $GOPATH/src/github.com/isucon/isucon9-qualify
$ make
payment service、shipment service とベンチマーカーのバイナリができます。
それぞれ別ターミナルにて、
$ ./bin/payment
port 5555でpaymentが
$ ./bin/shipment
port 7000 で shipmentが起動します。
これでISUCARIが使えるようになるはずです。
ベンチマークの実行
ベンチマーカーがpayment、shipmentサービスを内包しているので、立ち上げた両サービスは停止する必要があります。アプリケーションのみが起動していることを確認したら
$ ./bin/benchmarker
とすると、initializeのフェーズからベンチマークが動き始めます。
ベンチマーカーとアプリケーションを別ホストで動かす場合は、benchmarkerの起動時にURLを設定する必要があります。詳しくは
README.mdか ヘルプ
benchmarker -hを参考にしてください。
参考までに MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports) Intel Core i5 4 CPU モデルでの初期スコアは
2019/09/13 00:12:29 main.go:180: === final check ===
2019/09/13 00:12:29 main.go:212: 3020 0
{"pass":true,"score":3020,"campaign":0,"language":"Go","messages":[]}
これぐらいになりました。httpsでの通信がないためか予選時よりスコアは高くなっています。
なお上記の環境でベンチマークを実行すると、ファンがうねり、バッテリーが1-2%減ります。用法用量を気をつけて実行してください。よいスコア出ましたら、以下のissueに実行した環境と変更点など報告してもらえると、嬉しいです。
https://github.com/isucon/isucon9-qualify/issues/569
どうぞお試しください。