我目前正在对目标为netcoreapp2.2的.Net Core应用程序进行压力测试,该应用程序作为连接到具有2个实例的P1V2(210 ACU,3.5GB内存)服务计划的应用程序服务托管在Azure上。
我正在进行压力测试的终结点非常简单,它可以验证Oauth2.0令牌,从P2(250 DTU)Azure托管数据库中获取用户和有关用户的一些信息,每个请求总共4个数据库查询,并返回字符串“ Pong”。
在200个循环中运行15个并发用户(或更多)时,我看到图像中(最高峰之间)的处理停止。服务计划的CPU占用率永远不会超过20-35%,数据库使用的负载永远不会超过2%。增加用户会降低平均吞吐量。
当查看缓慢的请求时,就好像它只是随机停止一样,永远不在同一个地方。当我查看数据库请求时,我再也看不到一个请求会花费超过100毫秒的时间,而某些请求可能需要5-6s的时间来处理。
感觉好像我达到了某个极限,导致一段时间内停止运行,但是我不知道问题出在哪里。
在本地运行相同的压力时,我看不到这些停止。
我正在使用jmeter cli在两种环境下运行压力测试。
非常感谢您的帮助!
答案 0 :(得分:1)
这可能是因为Azure DDOS保护行为。
如果您的应用程序受到DDOS攻击,Microsoft将 停止与端点的所有连接,并实际上断开您的 服务。
为避免这种情况,您需要设置Web应用程序防火墙(WAF)以排除正常请求。