なぜこの記事を書いたか?
自分自身が環境構築で手間取ったため、もし同じような人がいた場合の助けになればと思い書きました
便利なスクリプトの存在なども、あとから気づいたので同じ轍を踏まないようにと備忘録的なことと
vagrantほとんどわからないところからいくつか学びがあったので、そのメモも兼ねています
解析編はこちら
前提
- MacBookPro
- vagrantインストール済み
- VirtualBoxインストール済み
- matsuuさんのvagrant-isuconを利用しての環境構築
- 今回の対象はisucon8-qualifier
- 上記のページに説明が書かれていますので、そちらで充分な方はそちらを直接見ていただいたほうが早いかもしれません
- 実行対象のアプリケーションはgo
vagrantでの環境立ち上げまで
1.Vagrantfileをclone
git clone https://github.com/matsuu/vagrant-isucon.git
2.ネットワーク設定を有効化
cd vagrant-isucon/isucon8-qualifier
vim Vagrantfile
※config.vm.network "private_network", ip: "192.168.33.10"のコメントを外す
3.vagrantを起動して変更をリロード
vagrant up
### 必要であれば
vagrant provision
ログイン〜データベース初期化
1.アプリ用サーバにsshログイン
vagrant ssh webapp
2.isuconユーザーにスイッチ
sudo -i -u isucon
3.DB(mariadb)の起動
sudo systemctl start mariadb.service
4.データベース初期化、アプリが動くのに最低限必要なデータ投入
cd torb
./db/init.sh
アプリケーションの起動
1.goのアプリケーションを起動
### おそらく初期でperlが動いているので停止
sudo systemctl stop torb.perl
sudo systemctl start torb.go
2.Webサーバ(h2o)の起動
sudo systemctl start h2o.service
3.ブラウザで確認
↓の結果で表示されたIPアドレスを入力して画面が出てくれば立ち上げ完了
ip addr
ベンチの起動
1.ログイン
vagrant ssh bench
sudo -i -u isucon
2.ベンチアプリのコンパイル
cd torb/bench/
make deps
make
3.初期データ生成
./bin/gen-initial-dataset
4.ベンチマーク実行
./bin/bench -remotes=[アプリケーションのIPアドレス] -output result.json
5.ベンチ結果の確認
jq . < result.json
おまけ
アプリログの確認
sudo journalctl -f -u torb.go
参考
https://github.com/matsuu/vagrant-isucon/tree/master/isucon8-qualifier
https://github.com/isucon/isucon8-qualify
vagrant関連
https://teratail.com/questions/95371
https://qiita.com/srockstyle/items/233ef326a75362200a91