所以我问了一个问题这里关于如何改进从 EC2 实例到 RDS 的连接。到目前为止,这一方法已经成功。
我目前拥有的设置比最初的设置更好,并且正在寻找进一步改进的方法。当前设置如下所示。
ELB
自动缩放EC2
运行 magento 的多个实例。
EC2
HHVM
使用varnish
和运行 magento 的实例NGINX
RDS
所有EC2
运行 magento 的实例都通过 3 个只读副本连接到此数据存储
Elastic cache
所有EC2
实例的 redis 会话都存储在这里。
S3
所有媒体和文件都存储在这里,并安装在所有 EC2 实例上
到目前为止,我已经能够首次返回时间从我最初启动时的 7 秒缩短到 1.79 秒,但运行速度仍然比我们的裸机服务器慢一点首次返回时间800毫秒。
我怎样才能进一步改善这个架构?
答案1
一些快速建议:
- 将 CloudFront 设置为 CDN(假设您希望保留在 AWS 基础设施内)。这有助于实现以下目标:
- 对媒体资产进行区域分布,以便将资产在地理位置上更接近您的客户
- 将资产请求卸载到单独的域以简化同一主机浏览器限制
- 您提到使用 Redis 进行会话,但我没有看到您对后端/整页/配置等的缓存。我的建议是对每种缓存类型使用单独的 ElastiCache 实例数据库。
- 禁用不再使用的 Magento 模块。通过确保仅在页面加载时加载所需的模块,这将加快 Magento 的速度。
通过正确设置 Magento 及其基础架构,很容易实现 < 100ms 的 TTFB 速度。在完成所有这些优化之后,瓶颈也可能是代码本身(自定义功能、写得不好的代码等)。