为什么Azure不在我的两个实例之一上调度HTTP请求?

时间:2012-09-13 10:33:17

标签: concurrency azure load-balancing azure-web-roles

我有一个包含两个实例的Azure Web角色。两个实例都“准备好” - 运行正常。

在我的桌面上,我有四个同时运行的程序实例,并使用HTTP请求命中Web角色URL。然而,根据日志,所有请求仅被分派到实例0。我需要将请求分派到两个实例以测试并发操作。

为什么没有将请求分派到第二个实例,如何将它们分派到那里?

2 个答案:

答案 0 :(得分:1)

这可能来自Load Balancer优化请求路由,因为所有请求都来自同一个IP。虽然它看起来很像,但Azure中的LB并不是一个真正愚蠢的Round Robin。

如果您没想到这一点,但服务器正在处理负载,那么您没问题。您甚至可以关闭第二个实例,直到您的指标显示服务器正忙(为您省钱)。

如果您需要能够从同一个IP加载余额,那么我会考虑使用队列。虽然这对于Web请求来说是不寻常的(与某些后端处理相比)。

答案 1 :(得分:0)

看起来这种行为是由于IIS“保持活跃”(<system.webServer><httpProtocol allowKeepAlive="true">。因为一旦客户端被一个实例提供服务而“保持活着”,它就会被该实例所困扰。

禁用“保持活动”会删除该请求,现在请求或多或少地随机访问所有实例。 MSDN表示禁用“保持活动”可能会降低性能,但为了测试并发操作,它会没问题。