Azure是否在限制我的WebApi访问?

14

我和其他几个开发者正在进行一场人工智能竞赛。基本上,我们有一个简单的棋盘游戏,并且我们每个人都编写了AI,这些AI将托管在我们自己的webservices上以相互对抗。

我已经运行了一个简单的WebApi 2服务,发布到了Azure上。我期望它大部分时间是静默的,然后突然间当游戏开始时,它会收到200-400个请求,这些请求可能非常快(一局游戏可能只持续几秒钟)。游戏服务器和AI之间使用普通的JSON POST进行通信。

我的问题是,Azure似乎正在限制请求。前几步发生得非常快,然后一切都变慢了。

我想知道Azure是否认为这是潜在的DOS攻击之类的东西。一旦事情变慢,获取回应可能需要超过1秒。以下是一些有趣的点:

  • 本地托管时从不会出现这种情况。
  • 根本没有数据库。
  • 即使是一个简单的测试AI也会发生这种情况(因此没有计算负载)。
  • 当游戏主机也部署到Azure时,它仍然会发生(因此是两个Azure站点互相交谈)。

那么我该如何解决这个问题?是否有一些设置我需要在某处告诉Azure这种行为是预期的?目前我将它当作共享服务,但我之前测试过使用两个实例的基本服务,仍然出现了减速的情况。


这是在哪个Azure计划上? - usr
我已经尝试过将其作为共享计划和基本计划。在测试基本计划时,我还尝试将实例数量增加到2个。但似乎没有帮助。 - Pharylon
2
这个链接可能对你有帮助: https://dev59.com/aGsz5IYBdhLWcg3wg4Gv - Shay
1
Shay,你是对的。我希望我能将评论标记为正确答案。 - Pharylon
@Pharylon:你能把答案从问题中删除,然后作为答案发布吗?你可以接受自己的答案。 - Jeroen Vannevel
2个回答

2

如果您使用的是免费或共享计划,则可能会遇到限制。

免费计划每天可获得60分钟的CPU时间,而共享计划每天可获得240分钟的CPU时间。

此外,共享网站的最大平均内存使用量(每小时)为1GB。但我假设您已经针对内存泄漏进行了代码分析。

Websockets有限制,但我不确定是否存在通用TCP连接限制。

这里是限制的链接。

我认为基本计划应该给您可预测的性能,但是基本计划中的小型实例只有1.6 GHz的CPU,这很可能远低于您的本地机器的CPU和核心数。

我认为标准A2大小的云服务Web角色(2个核心)可能比网站更合适。根据您的代码(如果它们能够利用大部分CPU并且可以在角色之间分配任务),甚至多个A0实例都更加推荐。

为了公平竞争,您可能也会受到CPU限制,这非常有趣。

祝一切顺利,并愿最佳代码获胜 :)


2
问题在于允许的同时连接数。客户端非常粗心,每次请求都会建立一个新的连接。这导致连接数量超过了限制。可以像这个答案中所述解决问题(正如Shay在评论中指出的,我希望我可以将评论标记为正确答案!)。但由于我也可以访问客户端代码,所以我在那里进行了修复。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接