Azure正在限制我的WebApi

本文关键字:我的 WebApi Azure | 更新日期: 2023-09-27 18:26:50

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

我有一个正在运行的服务,它是一个简单的基于WebApi 2的服务,发布到Azure。我的预期是,它大部分时间都会很安静,然后突然间,当游戏开始时,它会很快收到200-400个请求(一场游戏只能持续几秒钟)。游戏服务器和AI通过普通的JSON POST进行通信。

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

我想知道Azure是否认为这是一个潜在的DOS攻击或其他什么。一旦事情慢下来,可能需要一秒钟多的时间才能恢复。几个兴趣点:

  • 在本地托管时,这种情况永远不会发生
  • 根本没有数据库
  • 即使是一个简单的测试AI,它也会随机移动工件(因此没有计算负载)
  • 当游戏主机也部署到Azure时就会发生这种情况(所以这是两个Azure站点之间的对话)

那么我该如何解决这个问题呢?有没有一个我缺少的设置可以告诉Azure这种行为是意料之中的?我目前将其作为一个共享服务,但我之前用两个实例将其作为基本服务进行了测试,但我仍然看到了速度的放缓。

Azure正在限制我的WebApi

是的,如果你在免费或共享计划中,你可能会被抑制。使用免费计划,您每天可获得60分钟的CPU时间,使用共享计划,您每日可获得240分钟的CPU。

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

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

这是限制的链接。

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

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

对于公平竞争,您可能也有CPU限制,这非常有趣。

所有最好的,愿最好的代码获胜:)

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