
順調に進んでいらっしゃることを願っています。私は OpenLiteSpeed Web サーバーで Woocommerce を使用した Wordpress サイトを運営していますが、PHP の使用量が多すぎるとタイムアウト 504 エラーが表示されるようになります。すべてを AWS でホストしていますが、504 エラーの原因と、エラーを回避するために改善できる点を特定しようと奮闘しています。詳細は次のとおりです。
AWS セットアップ:
- Web サーバーは、Ubuntu 20.04 amd64 と 50Gb の EBS ストレージ (I/O 最適化が有効) を備えた t3.medium インスタンスにインストールされています。現在、約 10Gb が使用されています。
- PHP 7.4を実行して
- 私は CDN に 2 つの CloudFront ディストリビューションを使用しています。1 つはイメージ (S3 内) をサーバーに、もう 1 つは CSS/JS ファイルをサーバーに使用します。
- Web サーバーへのトラフィックを管理する ELB があり、アイドル タイムアウトは 300 秒に設定されています。
- Mariadb 10.5.13 を実行している db.t3.small RDS インスタンス (100Gb gp2) があり、データベース サイズは約 1.5gGb です。
- 3 つの cache.t3.micro ノードを備えた Redis ElastiCache を使用しています。
サイトの統計:
- このサイトには、1 週間あたり約 1,000 件のヒットがあります。
- 商品ページ約350件、ページ数約50件。
- ページ サイズの範囲は 500kb から 13.5Mb です。
どうしたの?
- 商品のアップロード(およびそれらへの画像の添付)、画像のアップロード、短時間に OLS キャッシュを複数回(約 3 ~ 4 回)フラッシュする、またはサイト内を移動して多数の商品ページを開き、それらをカートに追加するなど、負荷の高い PHP 機能を使用すると、サイトがタイムアウトし、504 エラーが発生します。
- EC2 CPUUtilization は最大ピークが 99% を示していますが、ネットワーク帯域幅は最大ピークの 2.0Gb に達し、CPU クレジットは安定しており、問題ないようです。
- DB 接続は 1 分あたり 50 でピークに達し、CPU 使用率は 20% から 30% の間で変動します。
- バーストクレジットは安定しています。
- stderr.log には、「子プロセスの上限に達しました: 35、追加: 0、現在: 35、ビジー: 35、LSAPI_CHILDREN を増やしてください。」というメッセージが多数表示されます。
スクリーンショット(EC2インスタンス):
これまで試したこと:
- 最大接続数と子プロセスを 350 に増やしてみましたが、タイムアウトの問題は解決しません。
- php.ini のメモリ制限を 512 MB に増やしましたが、違いはありませんでした。
- DB ストレージを 30 GB から 100 GB に増やそうとしましたが、うまくいきませんでした。
- EC2 インスタンスのストレージを 30 GB から 50 GB に増やそうとしましたが、やはりうまくいきませんでした。
質問/ヘルプが必要:
- 私の設定に基づいて、タイムアウトの根本原因を特定するために、どのようなメトリクス (およびその集計) を確認すればよいでしょうか? AWS には情報が多すぎるため、実際に何が変化をもたらすのかわかりません。
- より多くの CPU パワーを確保するために EC2 インスタンスをスケールアップする必要がありますか? または、RDS インスタンスをスケールアップする必要がありますか? それとも、何もしないのですか? 予算が限られているため、このオプションは実際には実現可能ではありません。
- Web サーバーで試すことができる設定はありますか? 役立つ場合は、conf ファイルをアップロードすることもできます。
- すべてをマネージドホスティングに移行して、幸せに暮らすべきでしょうか?
前もって感謝します