WordPressサイトをスムーズかつ効率的に運営するには、PHPのメモリ制限ワーカープロセスなどの技術的な要素を理解することが重要です。これらの要素は何を意味し、WordPressサイトのパフォーマンスにどのような影響を与えるのでしょうか。

WordPressサイトを人気のカフェに例えるなら、PHPメモリ制限はコーヒー豆やミルクなどの材料を保管するスペース。ストレージが小さすぎると、必要な物資が不足し、バリスタが効率的に飲み物を作ることができなくなります。そしてワーカープロセスは、バリスタにあたる存在です。多くのバリスタを雇用すれば、より多くの飲み物を同時に作ることができ、お客さんを待たせずに済みます。

今回は、PHPメモリ制限とワーカープロセスを取り上げます。パフォーマンスの最適化を使用方法と、Kinstaのお客様向けの調整方法もご紹介します。

PHPメモリ制限とは

ウェブサイトでは、ページを読み込んだり、プラグインを有効化したり、テーマの機能を使用したりするたびに、PHPスクリプトが実行されます。PHPメモリ制限は、WordPressサイトがアクセスできるメモリ量を決定するものです。

PHPメモリ制限は、以下のような問題を避け、すべてのタスクを処理できるように十分な値に設定しなければなりません。

  • ページ表示速度の低下:十分なメモリがないとPHPスクリプトの実行が遅くなり、ページの読み込み時間が長くなる
  • プラグインの不具合:リソースを大量に消費するプラグインは、十分なメモリがないと正しく機能しない場合がある
  • 死の真っ白画面:メモリ不足になるとサイトが適切に読み込まれず、「死の真っ白画面」と呼ばれる空白の画面が表示されることがある

ワーカープロセスとは

ワーカープロセスもまた、WordPressサイトのパフォーマンスに影響を与える重要なコンポーネントです。サーバー上のバックグラウンドプロセスで、サイトを動かすPHPコードの実行を管理します。

WordPressにおいては、ワーカープロセスはページの構築やスケジュールの決まったタスクの処理などを担当します。また、サイトの訪問者に提供するHTMLページを生成したり、キャッシュされていないリクエストの同時処理数を決定したりするのもワーカープロセスです。

訪問者がWordPressサイトにアクセスすると、リクエストがサーバーに送信され、ワーカープロセスによって処理されます。複数のワーカープロセスを追加すれば、複数のリクエストを同時に処理することができます。例えば、ワーカープロセスを2つ持つサイトに同時に5件のリクエストが来た場合、2件はすぐに処理され、残りの3件は最初の2件の処理が終わるまでキュー(日本語で「待ち行列」の意味)で待機します。

これはキューシステムと呼ばれ、トラフィックの管理に役立ちます。しかし、ワーカープロセスの数が足りない状態で一度に複数のリクエストを受け取ると、遅延やレスポンスの低下が発生する可能性があります。

PHPメモリ制限の管理

Kinstaでは、デフォルトのPHPメモリ制限を256MBに設定しており、大抵のWordPressサイト(およびプラグイン)には十分すぎる値です。

なお、制限を高く設定し過ぎても、設定ミスや問題のあるスクリプトがメモリを消費して深刻な問題を引き起こす恐れがあるため注意が必要です。

PHPメモリ制限を引き上げるタイミング

リソースを大量に消費するタスクを実行する際は、WordPressサイトのパフォーマンスと安定性を維持するため、PHPメモリ制限の引き上げが必要になります。

PHPメモリ制限を増やす必要がある典型的な兆候は、「Allowed memory size exhausted(許容メモリサイズを超えました)」というようなエラーメッセージが表示される場合。このメッセージは、現在のメモリ制限がタスクの実行に不十分であることを示しています。

PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes) 

上記メッセージは、PHPスクリプトが許容される256MB(268,435,456バイト)を超えるメモリを割り当てようとした結果、 メモリ不足エラーが発生したことを意味しています。スクリプトがさらに20KB(20,480バイト)を割り当てようとしましたが、メモリ不足になりました。

Kinstaでサイトをホスティングしている場合、このようなメモリ不足エラーは自動的にログに記録されます。MyKinstaにログインし、該当するサイトの「ログ」画面を開きます。

MyKinstaでWordPressサイトのエラーログを確認
MyKinstaでWordPressサイトのエラーログを確認

この画面で「PHP Fatal error」と「Allowed memory size exhausted」を含むエントリを探します。これらのログには、超過した正確なメモリ制限とスクリプトが割り当てようとしたメモリが表示されます。

ログを監視することで、サイトが頻繁にPHPメモリ制限を超過するかどうかを確認し、スクリプトのスムーズな実行を確保するためにメモリの割り当てを増やすかどうかを見極めることができます。

サイトのPHPメモリ制限を引き上げる方法

サイトのPHPメモリ制限を増やしたい場合、Kinstaであれば簡単にPHPメモリ制限アドオンを購入し使用することができます。

1サイトあたり月額50ドルで、256MBから512MBに上限を引き上げることが可能です。

アドオンの購入をご希望であれば、MyKinstaのライブチャットまたはメール([email protected]宛)にて、アカウント管理部門までお知らせください。

ワーカープロセスの管理

ワーカープロセスは、キャッシュしないコンテンツを多く持つサイトにとって特に重要になります。サイトが動的であればあるほど、より多くのワーカープロセスが必要になります。逆に、キャッシュしたコンテンツにはワーカープロセスは不要です。ワーカープロセスは、サイトが情報を取得または変更するためにデータベースに問い合わせを行う際や、他のPHPスクリプトを実行する際にのみ必要になります。

つまり、リクエストごとに動的にコンテンツを生成するのではなく、 キャッシュされたコンテンツを提供することで、ワーカープロセスの負荷を大幅に軽減することができます。

Kinstaでは、PHPのパフォーマンスを最大化するために様々な技術を実装し、お客様のサイトのパフォーマンスを最適化します。また、CDNとサーバーレベルでページキャッシュを提供し、Google Cloudの最速CPUを搭載したプレミアムサーバー(C2およびC3D仮想マシン)を利用しています。ローカルにホスティングし高度に最適化されたMySQLサーバーを確保することで、ネットワークレイテンシを短縮し、データの検索と処理速度を改善します。

ワーカープロセスを増やすタイミング

ワーカープロセスの必要数は、データベースクエリへの依存度、コードの最適化、トラフィックの種類など、いくつかの要因によって異なります。

効率的なPHPコードとデータベースクエリで最適化されたサイトは、 リクエストを迅速に処理し、次のリクエストのためにワーカープロセスを解放します。

ECサイト、フォーラム、学習サイト、会員制サイトのような動的なサイトは通常、静的サイトよりも多くのワーカープロセスが必要になります。また、トラフィックの増加に対応する際にも、ワーカープロセスが求められます。

ワーカープロセスを増やすことでトラフィックの増加に対応し、リクエスト処理の待ち時間を短縮することができますが、利用可能なCPUやRAMリソースとのバランスをとることが重要です。サーバーに十分なCPUとRAMがなく、ワーカープロセスを追加できなければ、パフォーマンスの問題につながります。

Kinstaでは、独自のAPMツールを利用してワーカープロセスのアクティビティを監視し、パフォーマンスの問題や遅いクエリを特定することができます。

MyKinstaのAPMツール
MyKinstaのAPMツール

頻繁にワーカープロセスの上限に達する場合は、パフォーマンスを改善するためにワーカープロセスを増やすか、サイトのコードとクエリを最適化する必要があるかもしれません。

ワーカープロセスを増やす方法

サイトにワーカープロセスを追加するには、プランをアップグレードするか、追加でワーカープロセスを購入することになります。

  • プランのアップグレード:Kinstaのプランには特定の数のワーカープロセスが付帯しており、上位のプランにアップグレードすると、ワーカープロセスの数が増えます。例えば、Single 35kプランからSingle 125kプランに移行すると、2から4に増加します。
  • カスタムプラン:Kinstaでは、特定の要件をもつサイト向けにワーカープロセスの数を指定できるカスタムプランもご用意しています。トラフィックの多いサイトや動的なコンテンツの多いサイトに適しています。ご希望でれば営業部門にお気軽にご相談ください。

ワーカープロセスの数を増やすことで、サイトがより多くの同時リクエストを処理できるようになり、パフォーマンスの向上とスムーズなユーザー体験につながります。

ただし、パフォーマンスのボトルネックを発生させないため、ワーカープロセスを追加するのに十分なCPUとRAMリソースがあることを常に確認してください。

PHPリソース管理のベストプラクティス

WordPressサイトのパフォーマンスと安定性を維持するには、PHPリソースの効果的な管理が鍵になります。

最後に、PHPメモリとワーカープロセスの使用を最適化するベストプラクティスをいくつかご紹介します。

  1. 効率的なキャッシュ:堅牢なキャッシュ機構を実装すると、ワーカープロセスの負荷が劇的に軽減されます。キャッシュされたコンテンツを訪問者に提供することでワーカープロセスが必要になるリクエスト数を最小限に抑え、より動的なタスクのためにワーカープロセスを解放することができます。
  2. コードとクエリの最適化:PHPコードとデータベースクエリが最適化されていることを確認すること。効率的なコード実行と合理化されたデータベースインタラクションによって処理時間が短縮され、ワーカープロセスがより多くのリクエストを短時間で処理できるようになります。
  3. PHPバージョンのアップグレード:定期的に最新のPHPにバージョンアップすること。新しいバージョンの方が通常高速かつ効率的です。
  4. リソース使用状況の監視:KinstaのAPMやQuery Monitorなどのツールを使用して、リソースの使用状況を評価すること。監視することでボトルネックや非効率性をリアルタイムで把握し、素早く必要な措置を取ることができます。

まとめ

PHPリソースを効果的に管理することは、WordPressサイトのパフォーマンスと安定性にとって非常に重要です。今回はPHPメモリ制限とワーカープロセスの概要と役割、および適切に使用する方法をご紹介しました。

Kinstaをご利用で、個別の相談やPHPメモリ制限の引き上げ、ワーカープロセスの追加などをご希望でしたら、MyKinstaのライブチャット、またはメール([email protected]宛)にてお知らせください。

Joel Olawanle Kinsta

Kinstaでテクニカルエディターとして働くフロントエンド開発者。オープンソースをこよなく愛する講師でもあり、JavaScriptとそのフレームワークを中心に200件以上の技術記事を執筆している。