我有一个包含两个实例的Azure Web角色。两个实例都“准备好” - 运行正常。
在我的桌面上,我有四个同时运行的程序实例,并使用HTTP请求命中Web角色URL。然而,根据日志,所有请求仅被分派到实例0。我需要将请求分派到两个实例以测试并发操作。
为什么没有将请求分派到第二个实例,如何将它们分派到那里?
答案 0 :(得分:1)
这可能来自Load Balancer优化请求路由,因为所有请求都来自同一个IP。虽然它看起来很像,但Azure中的LB并不是一个真正愚蠢的Round Robin。
如果您没想到这一点,但服务器正在处理负载,那么您没问题。您甚至可以关闭第二个实例,直到您的指标显示服务器正忙(为您省钱)。
如果您需要能够从同一个IP加载余额,那么我会考虑使用队列。虽然这对于Web请求来说是不寻常的(与某些后端处理相比)。
答案 1 :(得分:0)
看起来这种行为是由于IIS“保持活跃”(<system.webServer><httpProtocol allowKeepAlive="true">
。因为一旦客户端被一个实例提供服务而“保持活着”,它就会被该实例所困扰。
禁用“保持活动”会删除该请求,现在请求或多或少地随机访问所有实例。 MSDN表示禁用“保持活动”可能会降低性能,但为了测试并发操作,它会没问题。