Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium 域名重新解析问题_Selenium_Amazon Web Services_Tcp_Dns_Amazon Route53 - Fatal编程技术网

Selenium 域名重新解析问题

Selenium 域名重新解析问题,selenium,amazon-web-services,tcp,dns,amazon-route53,Selenium,Amazon Web Services,Tcp,Dns,Amazon Route53,如果我有四个相同的服务器托管在AWS EC2上,分为两个组,每个组位于不同的AWS区域。每组前面各有一个ELB。我配置了两个加权别名记录(不基于延迟)指向AWS Route53中每个组的ELB 每台服务器都安装了一个简单的apache2服务器,该服务器会显示一个简单的页面,其中包含不同的单词,以便相互区分。我启动了一个浏览器客户端(由library制作),经常用URL(这些服务器的域名)重新加载页面(暂停1秒钟),但我发现浏览器(firefox)总是从一个组中的服务器返回页面,而不是从两个组中返

如果我有四个相同的服务器托管在AWS EC2上,分为两个组,每个组位于不同的AWS区域。每组前面各有一个ELB。我配置了两个加权别名记录(不基于延迟)指向AWS Route53中每个组的ELB

每台服务器都安装了一个简单的
apache2
服务器,该服务器会显示一个简单的页面,其中包含不同的单词,以便相互区分。我启动了一个浏览器客户端(由library制作),经常用URL(这些服务器的域名)重新加载页面(暂停1秒钟),但我发现浏览器(
firefox
)总是从一个组中的服务器返回页面,而不是从两个组中返回50%的页面。 我还发现,如果我暂停相对较长的时间,来自另一组的页面确实会返回,但只要我经常刷新页面。它永远不会改变。请求总是命中一个组而不是另一个组

我还编写了一个简单的
Java
程序,不断从AWS Route 53查询域名,我得到的地址在两个组之间确实发生了变化,但浏览器似乎与它第一次连接的组保持连接(只要我经常刷新)

我怀疑这是TCP连接仍然存在的问题,但我不确定。顺便说一句,我已经禁用了浏览器缓存,我正在使用Mac OS X 10.9。(这种情况在Ubuntu上也会发生)


任何想法都将受到赞赏。这个问题对我的作品来说真的很重要,因为截止日期即将到来。非常感谢。不幸的是,这是正常的

许多,也许是大多数,浏览器缓存他们从操作系统得到的dns响应,而这个缓存的时间与dns TTL无关——这取决于浏览器开发人员

对于Firefox,默认时间似乎是60秒,因此,不太可能与keepalives直接相关,尽管这也有一定的潜力。。。虽然时间间隔较短,但在某些情况下,因为许多服务器会在60秒前断开空闲的保持活动的连接,因为连接空闲如此长的时间可能是一种昂贵的资源浪费

火狐:


有关此问题的讨论和对不同浏览器行为的观察,请参见:

非常感谢您的快速响应,但我在笔记本电脑上使用的firefox和Selenium库启动的浏览器上都将Network.dnsCacheExpiration和Network.dnsCacheExpirationGracePeriod设置为0。没有任何帮助。29()以下的Firefox版本似乎有一个bug,很可能是个bug,但要确认一下。。。您确实使用了小写的
网络
,而不是
网络
,对吗?另外,您是否确认值“0”并不意味着不确定(请尝试非常小的值)?您可以使用
tshark
确认keepalive计时行为。所有这些让我有点困惑,你在寻找答案。这是现状:(W)RR DNS无法可靠地为站点上已处于活动状态的所有单个用户提供快速故障切换。即使它是一个bug或糟糕的默认配置,我们(web平台管理员)也不能(通常)修复或授权浏览器配置。嗨,Michael,谢谢你的评论。是的,我从firefox的about:config页面复制了配置名称,因此我的代码中不应该有拼写错误,将其设置为0确实是禁用firefox DNS缓存的方法,正如互联网上的人所建议的那样。我想要实现的是模拟用户的网站浏览行为(或继续访问具有相同URL的网站),并且我希望看到用户请求被路由到两组服务器上的次数相等,并提供更长的监控时间。由于某些原因,由于我频繁访问URL,我总是从一组服务器得到响应(组)服务器不是另一个。我想知道可能的原因是什么。我不是在尝试实现故障转移,而是分发用户请求。无论如何,细微的问题总是很难通过描述情况来解决。因此再次感谢您的患者考虑我的问题。如果您不介意的话,再问一个问题:理想情况下,即使眉毛er或OS缓存DNS响应,此缓存的效果是通过WRR DNS负载平衡实现的用户请求分布将在更长的时间内反映出来,而不是在根本没有缓存的情况下立即生效?正确吗?