C# Azure正在限制我的WebApi吗?

C# Azure正在限制我的WebApi吗?,c#,azure,asp.net-web-api,throttling,C#,Azure,Asp.net Web Api,Throttling,我和其他几个开发人员正在进行人工智能竞赛。基本上,我们有一个简单的棋盘游戏,我们每个人都编写了AIs,这些AIs将托管在我们自己的Web服务上,以便彼此进行游戏 我已经启动并运行了一个简单的基于WebApi 2的服务,该服务发布到Azure。我的期望是,游戏在大部分时间里都是安静的,然后当游戏开始时,它会突然收到200-400个请求,所有请求都可能非常快(一个游戏只能持续几秒钟)。游戏服务器和AI通过普通的JSON帖子进行通信 我的问题是,Azure似乎正在限制请求。最初的几步动作发生得很快,然

我和其他几个开发人员正在进行人工智能竞赛。基本上,我们有一个简单的棋盘游戏,我们每个人都编写了AIs,这些AIs将托管在我们自己的Web服务上,以便彼此进行游戏

我已经启动并运行了一个简单的基于WebApi 2的服务,该服务发布到Azure。我的期望是,游戏在大部分时间里都是安静的,然后当游戏开始时,它会突然收到200-400个请求,所有请求都可能非常快(一个游戏只能持续几秒钟)。游戏服务器和AI通过普通的JSON帖子进行通信

我的问题是,Azure似乎正在限制请求。最初的几步动作发生得很快,然后一切都变慢了

我想知道Azure是否认为这是一种潜在的DOS攻击或其他什么。一旦事情进展缓慢,可能需要一秒钟的时间才能恢复。有几点值得注意:

  • 在本地托管时,不会发生这种情况
  • 根本没有数据库
  • 即使使用一个简单的测试AI,它也会随机移动块(因此没有计算负载)
  • 当游戏主机也被部署到Azure时,就会发生这种情况(因此,两个Azure站点相互通信)

那么我该如何解决这个问题呢?是否有一个我遗漏的地方可以告诉Azure这种行为是预期的?目前,我将其作为一项共享服务,但之前我用两个实例将其作为一项基本服务进行了测试,我仍然看到了速度的放缓

是的,如果您使用免费或共享计划,您可能会受到限制。 使用免费计划,您每天可以获得60分钟的CPU时间;使用共享计划,您每天可以获得240分钟的CPU时间

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

WebSocket有一些限制,但我不确定这是否是一个通用的TCP连接限制

是限制的链接

我认为基本计划应该提供可预测的性能,但基本计划中的一个小实例只有1.6GHz的CPU,这很可能比本地机器的CPU和内核要少得多

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

对于一个公平的竞争,你可能也有CPU限制,这是非常有趣的


祝一切顺利,也祝最好的代码获胜:)

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

这是什么Azure计划?我已经将其作为共享计划和基本计划进行了尝试。作为基本测试时,我还尝试将实例数增加到2。这个链接可能对你有用:谢伊,你是对的。我希望我能把一条评论标记为正确答案。@Pharylon:你能把答案从问题中删除,改为作为答案张贴吗?你可以接受自己的答案。