JavaScriptを有効にしてください

App Service のパフォーマンスを改善させる!

 ·   5 分で読めます  ·   Kento

今回は本webサイトのパフォーマンスをあげるために試行錯誤をしてみました。

現状の確認

今まで何も考えず Windows ベースの App Service Plan を使っていました
しかし Linux の方が安く、WordPress においては Windows よりも圧倒的な実績がありそうなのでパフォーマンスの向上も期待して変更してみます
改めて現在の環境を見てます

before01
現状の応答時間:

サーバーの応答時間が平均して約2秒かかっています

before02
現状の CPU、メモリ:

CPU の使用率は高くないものの、メモリの使用率が非常に高いです
これは MySQL in App という App Service プラン上で MySQL 環境を使っているところに起因している気がします
そのため別のSQL DBを用意することにします

before03
現状のストレージ:

またストレージは全く使っていませんそこで、メモリを上げつつ、ストレージを落としてみることにしました
選んでみたのは Linux ベースの B2 プランです以下が比較表です

移行前の環境 移行先の環境
OS Windows Linux
Plan S1 B2
コア数 1 2
RAM 1.75GB 3.50GB
ストレージ 50GB 10GB
DB MySQL in App Azure DB for MySQL Basic, 1core, 5GB
価格 ¥9,647.68/月 ¥7,343.84/月

パフォーマンスの向上が期待できそうで、なおかつコストも安く済みそうです!
移行先のプランが決まったので、さっそくリソースを作成してみます

手順

大きく以下の手順です

  1. 既存サイトのバックアップ
  2. App Service Plan & App Service の作成
  3. WordPress のインストール
  4. Azure Database for MySQL の作成
  5. WordPress の初期設定
  6. カスタムドメイン・SSLの設定
  7. データの移行
  8. 検証

1.既存サイトのバックアップ

まずはバックアップを取っておきます

webapp-backup
Web App のバックアップ:

既存の WordPress (Windows) からデータをエクスポートし、新規で作成した WordPess (Linux) へインポートする準備をします
WordPress のエクスポートは簡単で、管理者画面から操作ができました

WordPress01-
wordpress のエクスポート01:

wordpress02-
wordpress のエクスポート02:

2.App Service Plan & App Service の作成

次に新規作成した App Service Plan (Linux) へ 新規に WordPress 環境を作成します

以前に MarketPlace から 簡単に作成しましたが、今回は少し手順を踏んで仕組みを理解してみますこちらの記事を参考にしました
Easily Deploy WordPress on Azure App Service (A Concise Guide for Azure Architects) – TutLinks

portal01
App Service Plan の作成:

portal02
Web App の作成:

SQLのネットワーク設定のために **「プロパティ」> 「送信 IP アドレス」**をメモしておきます

portal03
ネットワークの確認:

3.WordPress のインストール

WordPressは AppService に SSH 接続をして実行します

portal04
SSH:

移動 → をクリックすると 以下のような画面が表示されるので WordPress のインストールを実行します

portal05
wordpress のインストール:

cd /home/site/wwwroot
wget -c http://WordPress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv WordPress/* /home/site/wwwroot/
rm -rf WordPress
rm -rf latest.tar.gz</code></pre>

4.Azure Database for MySQL の作成

Azure Database for MySQL のシングルサーバーを作成します

portal06
MySQL の作成:

作成が完了すると「サーバー名」と「サーバー管理者ログイン」を確認しておきます

portal07
サーバー情報の確認:

MySQL にローカル環境から接続できるようにセキュリティの設定を変更しておきます
またメモした App Service の送信IPアドレスも入力しておきます
例)ファイアウォール規則名:rule01、開始IP:1.1.1.1、終了IP:1.1.1.1

portal08
ファイアウォール規則:

MySQL に接続します。こちらを参考にしました
クイック スタート:接続 - MySQL Workbench - Azure Database for MySQL | Microsoft Learn

sql01
SQL への接続:

接続が完了したら WordPress 用の スキーマを作成します
SCHEMAS の中で右クリックをし、Create Schema… を選択します
名前を入力して、**Apply **を選択します
新しいウィンドウが表示されますが そのまま **Apply **を選択します

sql02
スキーマの作成01:

sql03
スキーマの作成02:

5.WordPress の設定

App Service の画面から 参照 をクリックして別タブで表示します

portal09
web app 概要:

WordPress の初期設定を行います
このときデータベース項目は作成した内容を入力していきます
以下のページが表示されると無事に設定が完了です

wordpress03
wordpress のダッシュボード:

6.カスタムドメイン・SSLの設定

WordPress を SSL に対応させるために Really Simple SSL をインストール&有効化します

wordpress04
wordpress のプラグイン:

次に Azure 側でカスタムドメインの設定を行います
詳しい手順はこちらを参考にしてください
既存のカスタム DNS 名をマップする - Azure App Service | Microsoft Learn

portal10
DNS 設定:

カスタムドメインの追加を選択し、検証を行います

portal11
カスタム ドメイン設定01:

検証ができたら「カスタムドメインの追加」を選択します

portal12
カスタム ドメイン設定02:

次に TLS/SSL の設定で、バインディングの追加をします

portal13
カスタム ドメイン設定03:

最後に WordPress の設定画面で カスタムドメインを使ったURLを設定します

wordpress05
wordpress の URL 設定:

7.データの移行

最後に初めにエクスポートしたデータのインポートやテーマのインストールを実行します
データのインポートの詳細はこちらを参考にしました
WordPressのサイトを別のサーバーに移行する方法【初心者向け】 | TechAcademyマガジン

8.検証

最後に新しい WordPress 環境が正しく動作できているか確認をします
まず DNS 期待通り反映されているか確認します
手順 7 の直後は 以前の環境のままだったのでしばらく待ってみました

terminal01
検証01:

適当に時間をおいたあと再度確認してみると、うまく反映されていました

terminal02
検証02:

各種メトリックでパフォーマンスが改善したか確認してみます
(青:以前の環境。オレンジ:新しい環境)

まずは応答時間です
平均値だけを見ると改善していますが、オレンジは外れ値が多すぎて参考にならないですね
WordPress の設定変更をたくさん行っていた時間帯なので、通常のサイト運営になるともう少し落ち着くと期待しておきます

portal14
検証03:

次にCPU使用率です
こちらも平均値を見ると下がっています
そこまでの外れ値がないのでこれは改善したといって問題なさそうです

portal15
検証04:

最後にメモリ使用率です
こちらも特に外れ値がなく改善したことがわかります

portal16
検証05:

まとめ

今回は プランの変更を行ってパフォーマンスの改善を試みました
結果としては以下です
パフォーマンスを改善しつつ、コストも節約できたので一石二鳥でした

結果 評価
応答時間 -0.31 秒 ?(様子見が必要)
CPU 使用率 -3%
メモリ使用率 -23%
コスト ¥-2,303.84
共有

Kento
著者
Kento
2020年に新卒で IT 企業に入社. インフラエンジニア(主にクラウド)として活動中