小規模な電子商取引サイトで EC2 上の OpenLiteSpeed サーバーがタイムアウトする

小規模な電子商取引サイトで EC2 上の OpenLiteSpeed サーバーがタイムアウトする

順調に進んでいらっしゃることを願っています。私は 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インスタンス):

CPU使用率%

ネットイン+ネットアウト

CPUクレジット残高

これまで試したこと:

  • 最大接続数と子プロセスを 350 に増やしてみましたが、タイムアウトの問題は解決しません。
  • php.ini のメモリ制限を 512 MB に増やしましたが、違いはありませんでした。
  • DB ストレージを 30 GB から 100 GB に増やそうとしましたが、うまくいきませんでした。
  • EC2 インスタンスのストレージを 30 GB から 50 GB に増やそうとしましたが、やはりうまくいきませんでした。

質問/ヘルプが必要:

  • 私の設定に基づいて、タイムアウトの根本原因を特定するために、どのようなメトリクス (およびその集計) を確認すればよいでしょうか? AWS には情報が多すぎるため、実際に何が変化をもたらすのかわかりません。
  • より多くの CPU パワーを確保するために EC2 インスタンスをスケールアップする必要がありますか? または、RDS インスタンスをスケールアップする必要がありますか? それとも、何もしないのですか? 予算が限られているため、このオプションは実際には実現可能ではありません。
  • Web サーバーで試すことができる設定はありますか? 役立つ場合は、conf ファイルをアップロードすることもできます。
  • すべてをマネージドホスティングに移行して、幸せに暮らすべきでしょうか?

前もって感謝します

関連情報