我在 Ubuntu 上运行相当简单的 PHP 网站,使用 AWS EC2 实例,它们使用*.rds.amazonaws.com
域名连接到各自的 RDS 实例。
这引发了两个问题:
当 DNS 缓存过期时,每 5 秒,下一个请求都会给我的网站处理时间增加至少 12 毫秒,这并不理想(我尝试保持在 100 毫秒的预算内)。
有时,此解决步骤会失败,因此我的脚本不会向客户显示错误页面,而是会休眠约 500 毫秒,然后重试。
我想知道是否有像本地缓存 DNS 解析器这样的东西可以更好地处理这些问题?
也许它可以将 IP 地址缓存 3 秒,然后自动尝试刷新该缓存,因为知道还剩 2 秒。如果仍然失败,仍然提供旧的/过时的响应,因为这比没有响应要好。
或者,它可以立即提供缓存的响应,即使它已经过期(它可能仍然正确);如果只是提供了过期的响应,则运行更新,以防 RDS 实例刚刚移动。
或者,我可以使用一个脚本来临时解决这个问题,该脚本循环检查 DNS 响应(dig +short
),当 IP 地址发生变化时,/etc/hosts
使用诸如 之类的主机名来更新文件database-abc
。
顺便说一句,我的网站在白天每 5 秒通常会收到大约 4 个请求(因此缓存更新相当频繁),但夜间活动较少。
答案1
Amazon Route 53 可有效地将用户请求连接到 AWS 中运行的基础设施(例如 Amazon EC2 实例、Elastic Load Balancing 负载均衡器或 Amazon S3 存储桶),还可用于将用户路由到 AWS 之外的基础设施。您可以使用 Amazon Route 53 配置 DNS 运行状况检查,以将流量路由到运行正常的终端节点,或独立监控应用程序及其终端节点的运行状况。
对于您的具体情况,这是一篇文章