我们有一个高流量(每天 10 万次点击)的 Drupal 新闻网站,托管在 AWS 上。该网站位于 cloudflare 和 2 台负载平衡 Varnish 服务器后面。出于某种原因,RDS 的带宽使用率非常高。这是在将所有缓存表托管在 Elastic Cache 中的 memcache 中之后。100% 的流量都是匿名的。除了新内容或更新内容外,流量均由 Varnish 提供。
但 RDS 带宽仍然很高。例如,截至本月 18 日,使用量已超过 15TB。这一成本正在拖垮整个网站。
我们如何检测是什么占用了所有带宽?我们如何找出根本原因?
请参阅复制自我的账单页面的详细信息:
Bandwidth
$0.000 per GB - data transfer in per month - 4.808 GB - $0.00
$0.000 per GB - first 1 GB of data transferred out per month - 1 GB - $0.00
$0.010 per GB - regional data transfer - in/out/between EC2 AZs or using IPs or ELB - 15,147.744 GB - $151.48
$0.120 per GB - up to 10 TB / month data transfer out - 20.759 GB - $2.49
Total: $153.97
Region Total: $154.04
答案1
你应该总是使用私人的IP 地址用于在各种基础架构组件(RDS、ElastiCache 等)之间进行通信。如果您使用民众IP 地址,那么您将被收取区域数据传输费用,因为流量离开并重新进入 AWS。
仔细检查您的应用程序是否存在使用公共 IP 地址不当访问后端组件的情况。
答案2
项目“区域数据传输 - 进入/离开/在 EC2 AZ 之间或使用 IP 或 ELB”负责数据传输:
- EC2 实例之间不使用私有 IP
- EC2 实例之间在不同的可用区域
- EC2 实例之间和 ELB
如果您的成本为“区域数据传输 - 进入/离开/在 EC2 AZ 之间或使用 IP 或 ELB“为 151.48 美元,则意味着这 3 个项目传输的数据总和为 15.148 TB。
所以始终使用私有 IP在同一可用区上的 EC2 上传输数据时,地址可能不正确。这可能是您的问题。
如果你想摆脱这笔费用,你应该使用同一可用区域中的所有 EC2 实例,但我不建议。如果所选可用区域出现问题,您的服务可能会离线。
您可以使用 AWS 账单和成本管理报告来了解哪些是造成该费用的最大因素,只需向您的实例添加标签,然后在 AWS 账单和成本管理控制台中创建一个有关 S3 存储桶的报告。