希望你一切顺利 - 我在 OpenLiteSpeed Web 服务器上使用 Woocommerce 运行 Wordpress 网站,在大量使用 PHP 的情况下开始显示超时 504 错误。我将所有内容托管在 AWS 中,我正在努力找出 504 错误的原因以及可以改进哪些方面来避免这些错误。以下是一些详细信息:
AWS 设置:
- Web 服务器安装在 t3.medium 实例中,该实例具有 Ubuntu 20.04 amd64 和 50Gb EBS 存储(启用了 I/O 优化)。目前大约使用了 10Gb。
- 运行 PHP 7.4 和
- 我正在使用两个 CloudFront 发行版作为 CDN:一个用于服务器映像(在 S3 中),另一个用于服务器 CSS/JS 文件。
- 我有一个 ELB 来管理到 Web 服务器的流量,空闲超时设置为 300 秒。
- 我有一个运行 Mariadb 10.5.13 的 db.t3.small RDS 实例(100Gb gp2),数据库大小约为 1.5gGb。
- 我正在使用带有三个 cache.t3.micro 节点的 Redis ElastiCache。
网站统计:
- 该网站每周的点击量约为1,000次。
- 约350个产品页面和50个页面。
- 页面大小范围从 500kb 到 13.5Mb。
有什么问题?
- 当使用繁重的 PHP 函数(例如上传产品(并附加图像)、上传图像、在短时间内多次(大约 3-4 次)刷新 OLS 缓存或浏览网站打开一堆产品页面并将其添加到购物车)时,站点会超时并抛出 504 错误。
- EC2 CPUUtilization 显示最大峰值为 99%,但网络带宽似乎可以达到 2.0Gb 的最大峰值,并且 CPU 信用保持稳定。
- Db 连接峰值为每分钟 50 个,CPU 利用率在 20% 到 30% 之间波动。
- 突发信贷保持稳定。
- stderr.log 显示很多“达到最大子进程限制:35,额外:0,当前:35,繁忙:35,请增加 LSAPI_CHILDREN。”。
屏幕截图(EC2 实例):
我到目前为止尝试过的:
- 我尝试将最大连接数和子进程数增加到 350,但超时问题仍然存在。
- 我已将 php.ini 内存限制增加到 512mb,但没有任何变化。
- 尝试将数据库存储从 30Gb 增加到 100Gb,但没有成功。
- 尝试将 EC2 实例存储从 30Gb 增加到 50Gb,但仍然没有成功。
有疑问/需要帮助:
- 根据我的设置,我应该寻找哪些指标(及其聚合)才能查明超时的根本原因?AWS 有太多信息,我不知道什么可以真正发挥作用。
- 我是否应该扩展我的 EC2 实例以允许更多的 CPU 能力?或者我应该扩展我的 RDS 实例吗?还是不扩展?我的预算有限,所以这个选项并不可行。
- 我可以尝试在 Web 服务器上进行任何配置吗?如果有帮助的话,我可以上传我的配置文件。
- 我是否应该将所有东西都转移到主机托管并从此过上幸福的生活?
提前致谢