「達人が教えるwebパフォーマンスチューニング」を読んで、Webパフォーマンスチューニングに必要なログの設定や、インストールしたコマンドをまとめました。
パフォーマスチューニングを行う際に、これだけ準備したいね。というものをまとめています。
事前の環境構築が終わっていない方は、以下の記事を参考にしてください。
事前準備
前回までの環境構築が終わっていれば、スポットインスタンスのEC2が準備されているはずです。
なるべく課金が発生しないように、インスタンスを停止している場合は、インスタンスを起動しておきます。
(作業が終わったら、最後にインスタンスを停止しておきましょう。)
環境構築
後の作業が楽になるよう、諸々設定しておきます。
Session Managerのデフォルトシェルをbashに変更する
Session Managerを使用してログインした際、デフォルトシェルがshになっています。
これだと、ターミナル上で補完が効かなかったりで、操作しづらいので変えます。
こちらの記事を参考に設定します。
Homebrewを入れる
コマンドを追加で入れるためにHomebrewをインストールします。
brew公式ページに記載されているインストールコマンドをターミナルに貼り付けます。
Homebrewインストール中に、「echo xxx を実行してね」とか色々表示されるので、それに従いましょう。
gccも入れておいてね と表示されるので、「brew install gcc」で入れましょう。
# pathが通っていない旨のwarningが出たら
echo 'export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
諸々必要なコマンドをインストールする
アクセスログ集計用のコマンド
brew install alp
ベンチマーカー実行コマンド
$ apt update
$ apt install apache2utils
サーバメトリクス監視コマンド
apt install dstat
ログの出力設定をする
nginxのログ出力形式をjsonに変更する
「/etc/nginx/nginx.conf」を編集します。
httpのブロックの中に、以下を追記します。
log_format json escape=json '{"time":"$time_iso8601",'
'"host":"$remote_addr",'
'"port":$remote_port,'
'"method":"$request_method",'
'"uri":"$request_uri",'
'"status":"$status",'
'"body_bytes":$body_bytes_sent,'
'"referer":"$http_referer",'
'"ua":"$http_user_agent",'
'"request_time":"$request_time",'
'"response_time":"$upstream_response_time"}';
nginxの設定ファイルの構文チェックを行います。
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
問題がなければ、nginxを再起動します。
$ sudo systemctl reload nginx
適当にWebページにリクエストを送って、ログがjson形式になったことを確認します。
$ sudo cat /var/log/nginx/access.log
mysqlのスロークエリを出力するように設定する
「/etc/mysql/mysql.conf.d/mysql.cnf」を編集します。
以下を追記します。
パフォーマンスチューニングのために、全ての実行クエリの情報が出力されるように「long_query_time = 0」としています。
実際に運用する際には、全てのクエリがログに書き込まれるだけでも負荷になるので、0ではなく、何秒以上のクエリをログに出力するのか調整しましょう。
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 0
設定変更を反映させるために、mysqlを再起動します。
sudo systemctl restart mysql
その他、書籍を読み進める中で、気付いたタイミングで追記します。
コマンドの実践編を知りたい方は以下をご覧ください。