研究室有志によるISUCON勉強会 ISUCON部 の第1回資料です。
vagrant を使った環境構築
試しに ISUCON5 の予選を再現した環境を vagrant で動かしてみる。
競技用ウェブアプリの環境構築
git clone https://github.com/gky360/vagrant-isucon.git
cd vagrant-isucon/isucon5-qualifier
vagrant up image
http://192.168.33.10 が見られたらここまではok。
ベンチマーク用の環境構築
vagrant up bench
vagrant ssh bench
sudo su -l isucon
# 上で立てた競技用ウェブアプリに対してベンチマークを走らせる
./bench.sh 192.168.33.10
何もしない状態でとりあえず 271.2 点取れました。
ちなみに、ISUCON 5 本戦出場者の得点はみんな5桁とか6桁とかです。
http://isucon.net/archives/48475110.html
言語を golang に切り替え
基本的に以降のコマンドは vagrant ssh image
した中で。
# 環境構築 (optional)
sudo apt-get install -y zsh vim tmux htop dstat
# isucon ユーザに変える
sudo su - isucon
# systemctl スクリプトの確認
ls -l /etc/systemd/system/
# 80 と 8080 で何か動いている
sudo lsof -i :8080
# 実はこの vagrant はデフォルトで ruby 版の実装が動いている
systemctl status isuxi.ruby.service
# ruby 版webapp停止
systemctl stop isuxi.ruby.service
systemctl disable isuxi.ruby.service
sudo lsof -i :8080
# golang 用環境設定
echo "export PATH=/home/isucon/.local/go/bin:$PATH" >> ~/.bashrc
echo "export GOROOT=/home/isucon/.local/go" >> ~/.bashrc
echo "export GOPATH=/home/isucon/webapp/go" >> ~/.bashrc
exec -l $SHELL
# go build
cd ~/webapp/go
go build app.go
go run app.go
# golang のサーバに切り替え
systemctl start isuxi.go.service
systemctl status isuxi.go.service
sudo lsof -i :8080
なにも log がでなくて不安なので、出るようにする。
https://github.com/gorilla/mux の Middleware のところを参考に loggingMiddleware
を足す。