概要
達人が教えるWebパフォーマンスチューニング〜ISUCONから学ぶ高速化の実践(通称ISUCON本)を読みつつ、
その内容を参考にパフォーマンスチューニング実践用の環境を構築しました。
アウトプットの練習と手順の備忘も兼ねて、その記録を残します。
なおISUCON本の内容およびその感想については、本記事では主題としておりませんのでご留意ください。
検証用サーバ(private_isu)構築
公式リポジトリに記載のAMI IDを参照してEC2を起動します。
アーキテクチャ
x86_64
にしました。
(コストを気にして一度arm64
で立ててみたのですが、Linux用alpでarm64向けのものが見当たらなかったため作り直しました。)
筆者が見落としていただけで、arm64向けのものもリリース済みでした。
インスタンスタイプ
推奨を無視してt3.micro
にしました。
スペック不足が無視できなくなるごとにスケールアップおよびインスタンスタイプ変更をしていく方針です。
なおt3.nano
では流石にメモリ不足でMySQLが起動しませんでした。
ネットワーク設定
SSMでのコンソール接続ではなくSSH接続を使用するためパブリック IP の自動割り当て
を有効化しました。
個人使用であり、起動のたびにIPアドレスが変わることも許容できることからEIPは使用しません。
セキュリティグループに必要最低限の穴開けを行います。
(筆者は送信元IPアドレスを手元の端末のみに限定し、ssh
、HTTP(S)
、ICMP
でのアクセスが可能となるよう穴開けしました)
動作確認
上記条件で起動すれば最低限
- SSH接続できる
- Webアプリケーションが動作する
- WebアプリケーションにHTTP(S)接続できる
負荷試験環境を用意する
後々ベンチマーカーサーバを別途構築することになると思いますが、ひとまず検証用サーバ内で負荷試験環境を整備します。
アクセスログの出力形式を調整する
alpでnginxのアクセスログを集計するため、まずはアクセスログの出力形式をJSON形式に変更します。
(詳しい手順は省略します)
alpをインストールする
アクセスログの集計のため、alpを公式リポジトリからダウンロードします。
wget https://github.com/tkuchiki/alp/releases/download/v1.0.16/alp_linux_amd64.tar.gz
tar xvzf alp_linux_amd64.tar.gz
sudo install ./alp /usr/local/bin
ベンチマーカー(ab)をインストールする
負荷試験実施のため、abをインストールします。
sudo apt update
sudo apt install apache2-utils
おわりに
ここまでで最低限パフォーマンスチューニングに着手できる環境が整ったかと思います。
余分な課金防止のためインスタンスを停止し、一息つきましょう。