我遇到了一些有趣的网络问题,我可以重现并解决这些问题,但无法解释 - 因此我问你!:)
我设置了两台服务器,均位于 Google 网络中:
- 服务器 A(Google App Engine):面向公众的 Web 服务器,为网站提供服务
- 服务器 B(Google Compute Engine):抓取服务器,获取服务器 A 的 HTML 图像
几天前,我开始遇到从服务器 B 到服务器 A 的请求的许多超时错误。在大多数情况下,它无法连接到服务器 A,即使服务器 A 可以从任何其他 IP 地址完全访问。
我通过 ssh 进入服务器 B 并发现以下情况:
我可以
curl www.ServerA.dk
在几秒钟内做大约 3 次,然后连接断开,我必须等待大约 20 秒,然后才能做更多卷发我可以毫无问题地根据需要多次卷曲任何其他 URL
到服务器 A 的 ping 时间极低 (< 1 毫秒)
我可以通过以下方式解决问题:
- 将 DNS 更改
/etc/resolv.conf
为 Google 公共 DNS
或者:
- 通过使用默认 Google URL(ServerA.appspot.com)而不是我的丹麦域名 www.ServerA.dk 来访问服务器 A
我感觉这是 Google 或我的丹麦 DNS 提供商的 DNS 问题。您有什么线索吗?
实际域
- www.kobstaden.dk(自定义域名)
- kobstaden-hrd.appspot.com(默认 Google 域名)
一些(随机)DNS信息:
我已经从我的 DNS 提供商设置:
- www.kobstaden.dk 的 C-Name 指向 ghs.google.com
干杯!
答案1
这是对此问题的最佳猜测答案。许多大型 DNS 提供商的 DNS 服务器都是多宿主的 - 即同一个 IP 地址会将您发送到距离您最近的服务器(就网络拓扑而言,而不是地理位置而言)。
如果响应多宿主 IP 的服务器之一配置错误,那么来自拓扑上靠近它的客户端的任何请求都可能得到错误答案或没有答案。因此,通过更改 DNS 服务器,您可能会得到一个拓扑上更靠近您的服务器,并且通过使用不同的域名,您还将获得可能响应更好的其他服务器。