

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# での WordPress インスタンスのヒントとベストプラクティス Amazon Lightsail
<a name="amazon-lightsail-wordpress-tips-best-practices"></a>

このガイドでは、WordPress インスタンスをAmazon Lightsail高速、安定、安全に保つための実用的なヒントを収集します。

## サイトを安全かつ最新の状態に保つ
<a name="wordpress-keep-secure-and-updated"></a>

### WordPress、テーマ、プラグインを最新の状態に保つ
<a name="wordpress-keep-updated"></a>
+ WordPress コア、テーマ、プラグインの更新を迅速に適用します。更新には、多くの場合、パフォーマンスとセキュリティの修正が含まれます。詳細については、[「更新管理でLightsailインスタンスとコンテナを安全](amazon-lightsail-update-management.md)に保つ」を参照してください。
+ 使用していないプラグインとテーマを削除します。非アクティブなプラグインは依然としてメンテナンスオーバーヘッドとセキュリティ領域を追加し、書き込まれていないプラグインはメモリ使用量が多い原因としてよくあります。
+ インスタンスのスナップショット起動コピーをライブサイトに適用する前に、メジャーアップデートをテストします。

### 変更を行う前にバックアップする
<a name="wordpress-back-up-before-changes"></a>

設定ファイルを編集したりプラグインをインストールする前に、インスタンスのスナップショットを作成して、問題が発生した場合にスナップショットからアプリケーションを簡単に復元できるようにします。
+ Lightsail コンソールから手動スナップショットを作成する、または
+ 自動スナップショットを有効にします。

手順については、[「スナップショットを使用して Linux/Unix Lightsailインスタンスをバックアップする](lightsail-how-to-create-a-snapshot-of-your-instance.md)」および[「自動スナップショットを設定する](amazon-lightsail-configuring-automatic-snapshots.md)」を参照してください。

## モニタリングとトラブルシューティング
<a name="wordpress-monitoring-and-troubleshooting"></a>

### インスタンスのメモリ不足を確認するにはどうすればよいですか?
<a name="wordpress-detect-out-of-memory"></a>

一般的な症状は次のとおりです。
+ サイト**に「データベース接続の確立中にエラーが発生しました**」と表示されます (パブリックサイトと管理者パネルの両方）。これは通常、MariaDB が停止したことを意味します。
+ サイトのロードが遅いか、トラフィックが控えめにタイムアウトします。

確認するには、SSH 経由でインスタンスに接続し、現在のメモリ使用量を確認します。

```
free -m
```

の下の`available`列を確認します`Mem:`。これは、インスタンスが引き続き使用できるメモリの量です。`available` が **50 MB **未満の場合、インスタンスはメモリ負荷が高く、OOM が強制終了するプロセスのリスクがあります。

カーネルがメモリ不足 (「OOM kill」) のプロセスを終了したかどうかを確認することもできます。

```
sudo dmesg | grep -i "out of memory"
```

エントリが `mariadbd`または に言及している場合`mysqld`、データベースはメモリ負荷で終了するため、[「メモリパフォーマンスの向上](#wordpress-improve-memory-performance)」の手順が役立ちます。

### インスタンスにはすでに自動メモリ調整がありますか?
<a name="wordpress-automatic-memory-tuning"></a>

新しい LightsailWordPress ブループリントには、インスタンスのメモリサイズを検出し、このガイドで説明されているスワップ、MariaDB、Apache/PHP の設定を、インスタンスの起動時や再起動時などに自動的に適用するサービスが含まれています。インスタンスにインスタンスがあるかどうかを確認するには、SSH 経由で接続し、以下を実行します。

```
systemctl status lightsail-memory-config
```

サービスが存在する場合、インスタンスはこれらの設定を自動的に管理するため、手動で適用する必要はありません。コマンドがユニットが見つからないことを報告した場合は、[「メモリパフォーマンスの向上](#wordpress-improve-memory-performance)」の手順に従ってください。

## パフォーマンスの最適化
<a name="wordpress-optimize-performance"></a>

### ワークロードに適したバンドルを選択する
<a name="wordpress-choose-bundle"></a>

WordPress のパフォーマンスを向上させる最も効果的な方法は、ワークロードに十分なメモリを持つインスタンスバンドルで を実行することです。WordPress 自体は軽量ですが、プラグイン、テーマ、データベースは大量のメモリを消費する可能性があります。
+ **512 MB – 1 GB RAM (Lightsailナノインスタンスバンドルとマイクロインスタンスバンドル):** プラグインのセットを最小限に抑えながら、小規模なブログやトラフィックの少ないサイトに適しています。これらのインスタンスは、メモリ負荷が発生する可能性が最も高く、以下の調整から最もメリットがあります。
+ **2 GB RAM 以上:** ページビルダー (Elementor や Divi など）、WooCommerce、または多数のアクティブなプラグインを実行する場合に推奨されます。

サイトが大きくなり、より多くのリソースが必要になると、[スナップショットを作成し、そこから新しいより大きなインスタンスを起動することで、](how-to-create-larger-instance-from-snapshot-using-console.md)より大きなバンドルにアップグレードできます。

### メモリパフォーマンスの向上
<a name="wordpress-improve-memory-performance"></a>

**注記**  
新しい LightsailWordPress ブループリントでは、インスタンスが起動するたびにサイズ対応メモリ調整が自動的に適用されるため、このセクションの手動ステップのほとんどは、新しい WordPress Lightsail インスタンスを作成する場合に処理されます。

ユーザー (または訪問者) がページをロードしようとしたときにサイトに「データベース接続の確立エラー」が表示された場合、またはメモリ不足 (システムログなど) により MariaDB が強制終了されたことを示すログメッセージが表示された場合`Out of memory: Killed process ... (mariadbd)`、インスタンスのメモリが不足している可能性があります。小規模なインスタンスでは、メモリが枯渇すると、Linux カーネルが MariaDB データベースプロセス (「OOM kill」) を終了することがあります。

以下の 3 つのステップでは、スワップ領域を追加し、データベースとウェブサーバーが使用できるメモリの量を制限することで、メモリ負荷を軽減します。各ステップは単独で役立つため、必要なステップのみ、または 3 つすべてを適用して最大限の効果を得ることができます。開始する前に、インスタンスの最新のスナップショットがあることを確認してください。詳細については、[「変更を行う前にバックアップする](#wordpress-back-up-before-changes)」を参照してください。

**重要**  
これらのステップでは、SSH 経由でインスタンスに接続し、 でコマンドを実行する必要があります`sudo`。データベースとウェブサーバーを再起動すると、サイトが短時間 (数秒) 中断されるため、トラフィックが少ない時間帯に変更を加えます。

インスタンスに接続するには、 Lightsailコンソールでブラウザベースの SSH クライアントを使用するか、[Linux または Unix インスタンスに接続する](lightsail-how-to-connect-to-your-instance-virtual-private-server.md)を参照してください。

#### ステップ 1: スワップファイルを追加する
<a name="wordpress-add-swap-file"></a>

スワップファイルを使用すると、オペレーティングシステムは非アクティブなメモリをディスクにオフロードできます。これにより、約 1.5 GB 未満の RAM を持つインスタンスでのout-of-memoryのクラッシュを防ぐことができます。ナノバンドルまたはマイクロバンドルにスワップを追加することをお勧めします。通常、より大きなバンドルには必要ありません。

まず、スワップがすでにアクティブかどうかを確認します。

```
cat /proc/swaps
```

出力される行が ヘッダーのみである場合 (スワップエントリがリストされていない）、スワップは設定されません。

```
Filename                Type        Size       Used    Priority
```

650 MB スワップファイルを作成します。

```
sudo dd if=/dev/zero of=/mnt/.lightsail.swap bs=1K count=665600 status=progress
sudo chmod 600 /mnt/.lightsail.swap
sudo mkswap /mnt/.lightsail.swap
sudo swapon /mnt/.lightsail.swap
```

スワップファイルを再起動後も保持するには、 に追加します`/etc/fstab`。

```
echo '/mnt/.lightsail.swap none swap sw 0 0' | sudo tee -a /etc/fstab
```

スワップがアクティブになったことを確認します。

```
cat /proc/swaps
```

スワップファイルが出力に表示されるようになりました。

```
Filename                Type        Size       Used    Priority
/mnt/.lightsail.swap    file        665596     0       -2
```

#### ステップ 2: MariaDB データベースを調整する
<a name="wordpress-tune-mariadb"></a>

`innodb_buffer_pool_size` は MariaDB 最大の単一メモリコンシューマーです。デフォルトのプールサイズがインスタンスメモリと比較して大きすぎると、out-of-memoryのクラッシュにつながる可能性があります。

推奨設定テーブルから`innodb_buffer_pool_size`インスタンスに推奨されている を見つけ、その値を持つ専用設定ファイルを作成します (`16M`この例では を自分の値に置き換えます）。 [インスタンスメモリ別の推奨値](#wordpress-recommended-memory-values)

```
sudo tee /etc/mysql/mariadb.conf.d/90-lightsail-memory.cnf > /dev/null <<'EOF'
[mysqld]
innodb_buffer_pool_size = 16M
EOF
```

変更を実行するには、データベースを再起動する次のコマンドを実行します。

```
sudo systemctl restart mariadb
```

#### ステップ 3: Apache と PHP を調整する
<a name="wordpress-tune-apache-php"></a>

Apache は、WordPress サイトへの受信リクエストを処理するウェブサーバーです。デフォルトでは、最大 150 の同時ワーカープロセス () が許可されます`MaxRequestWorkers`。小さなインスタンスでは、各 PHP ワーカーは数十メガバイトを使用できるため、負荷がかかるとメモリが枯渇する可能性があります。インスタンスに一致するワーカーの数を制限し、1 つの PHP リクエストで使用できるメモリの量を制限するには、Apache `mpm_prefork`制限を設定します (表示される値はマイクロインスタンス用です。インスタンスの[推奨設定表](#wordpress-recommended-memory-values)を確認してください）。

```
sudo tee /etc/apache2/mods-available/mpm_prefork.conf > /dev/null <<'EOF'
<IfModule mpm_prefork_module>
    StartServers            1
    MinSpareServers         1
    MaxSpareServers         3
    MaxRequestWorkers       5
    MaxConnectionsPerChild  5000
</IfModule>
EOF
```

PHP を設定します `memory_limit` (512 MB はすべてのサイズで安全な上限です）。まず PHP バージョンを検出し、設定ファイルを書き込みます。

```
PHP_VERSION=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
sudo mkdir -p /etc/php/${PHP_VERSION}/apache2/conf.d
sudo tee /etc/php/${PHP_VERSION}/apache2/conf.d/90-lightsail-memory.ini > /dev/null <<'EOF'
memory_limit = 512M
EOF
```

Apache を再起動して両方の変更を適用します。

```
sudo systemctl restart apache2
```

#### インスタンスメモリ別の推奨値
<a name="wordpress-recommended-memory-values"></a>

インスタンスの合計 RAM に基づいて、以下の値を使用します。インスタンスのメモリを確認するには、 を実行して `total`列`free -m`を確認するか、Lightsailコンソールでバンドルサイズを参照してください。


**インスタンス RAM 別の推奨メモリ設定**  

|  インスタンスメモリ (RAM)  |  MariaDB `innodb_buffer_pool_size`  |  Apache `MaxRequestWorkers`  |  PHP `memory_limit`  |  スワップファイル  | 
| --- | --- | --- | --- | --- | 
| 最大 1.5 GB | 16M | 5 | 512M | はい (650 MB) | 
| ～1.5～3 GB | 256M | 10 | 512M | いいえ | 
| \~3～6 GB | 256M | 25 | 512M | いいえ | 
| 6～13 GB | 2048M | 50 | 512M | いいえ | 
| 13～26 GB | 2048M | 125 | 512M | いいえ | 
| 26 GB 以上 | 4096M | 250 | 512M | いいえ | 

### キャッシュを使用して負荷を減らす
<a name="wordpress-use-caching"></a>

キャッシュにより、WordPress がデータベースをクエリして PHP を実行する必要がある頻度が減り、CPU とメモリの両方の使用率が低下します。
+ **ページキャッシュ:** W3 Total Cache や WP Super Cache などのキャッシュプラグインをインストールして、ページの静的コピーを提供します。
+ **オブジェクトキャッシュ:** サイトに多数のログインユーザーがある場合、WooCommerce を実行している場合、または頻繁に変更される動的コンテンツ (フォーラムやメンバーシップエリアなど) を使用している場合、オブジェクトキャッシュプラグイン ([Redis Object Cache ](https://wordpress.org/plugins/redis-cache/)や APCu ベースのキャッシュなど) は頻繁に使用されるクエリ結果をメモリに保存し、データベースの繰り返し検索を減らします。
+ **コンテンツ配信ネットワーク (CDN):** 静的アセット (イメージ、CSS、JavaScript) を [Lightsail Distribution](amazon-lightsail-creating-content-delivery-network-distribution.md) などの CDN にオフロードして、インスタンスによって処理されないようにします。