途中経過の個人的な記録
参考:達人が教えるWebパフォーマンスチューニング 技術評論社
環境構築
チュートリアルどおりに進める
git clone git@github.com:{{フォークした自分のユーザー名}}/private-isu.git
cd webapp/sql
curl -L -O https://github.com/catatsuy/private-isu/releases/download/img/dump.sql.bz2
bunzip2 dump.sql.bz2
docker compose up
ここで問題2つ発生
- 別pjで
3306
ポートを使っておりエラーとなったError response from daemon: driver failed programming external connectivity on endpoint private-isu-mysql-1 (c0082d1461c3e9632461292ee5c07485f7afdfc7ae45c40017c8e1ba2ccded4e): Bind for 0.0.0.0:3306 failed: port is already allocated shimakura@shimakuraMacBookAir webapp % docker compose up
- mysqlサービスのポート割当を3306→3366に修正
ports: - "3366:3306"
- 改めて
docker compsoe up
実行しlocalhost:80
にアクセスするもusersテーブルが無いと出る - DBの状況を確認するためmysqlに入って調査委
docker compose exec -it mysql bash
mysql -uroot -proot
- mysql> use isuconp
- mysql> show tables;
- 確かにusersテーブルが無いのでinitに失敗したのだろう
+-------------------+ | Tables_in_isuconp | +-------------------+ | comments | | posts | +-------------------+
- ボリューム消してリトライ
docker compose down
docker volume rm private-isu_mysql
docker compose up
- 改めて80番にアクセスすると期待しているtopページ見が見られたので解決
ベンチマーク実行
ベンチマーク用のコンテナ作成
cd benchmarker/userdata
curl -L -O https://github.com/catatsuy/private-isu/releases/download/img/img.zip
unzip img.zip
rm img.zip
cd ../
docker build -t private-isu-benchmarker .
ベンチマーク実行
cd benchmarker
docker run --network host -i private-isu-benchmarker /bin/benchmarker -t http://localhost -u /opt/userdata
- 上記実行時に
docker stats
実行するとprivate-isu-mysl-1
コンテナのCPU使用率が90%超えとなり、mysqlに負荷かかっている事がわかる - しばらくして以下の結果得られた
{"pass":true,"score":1241,"success":1066,"fail":0,"messages":[]}