python接口压测1000并发_Asp.net 性能监控之压测接口“卡住” 分析

问题描述:web api项目接口压测。前期并发100,500没出现问题,平均耗时也在几百毫秒。当并发1000时候,停留等待许久,看现象是jemeter卡住,没返回,时间过了许久,才正常。

解决过程:

查看服务器应用程序日志,查看项目全局捕获日志,查看服务器cpu,内存,网络。一切正常

查看客户端和服务端之间的Tcp连接:netstat -ano | find /c "***.***.***.***",连接一直处于通信状态一直没有释放。卡住剩余的连接数和没释放的连接数相同。好像有点端倪了,但是很模糊。

既然连接一直没有释放那么尝试把Tcp的timewait时间变短。修改注册表的配置。然而并没有什么用。

无头绪,只好加大监控力度。Windows performance Counters。

发现压测时候Request Queue突然增加很多,Requests/Sec下降,

还有一篇外文说的更加详细,很多监控细节都有说明。

大致意思就是:瞬间的并发请求太多,Asp.net预留线程不够,Asp.net来不及创建足够新的线程。

当然这个可以配置:machine.config中的processModel(位于C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config)

注意:ProcessModel这个配置在项目的web.config也可以智能提示出来,但是配置了也无效。只能在machine配置。说明地址

其次。还有解决办法,把IIS项目的应用程序池 进程数量调大,把队列长度也调大。并发压测的时候先预热请求几个接口让进程都起来先。

虽然不会卡,但是物极必反。太多进程同时跑起来,CPU一下子就上去了。(图中在14:02和14:05设置的进程数量不同)。

疑问:修改的ProcessModel的配置是全局的,不能单个项目配置,那么一台服务器是多个项目,会不会有影响

最终修改方法:优化接口业务代码(辛亏还可以优化【HttpWebRequest的DefaultConnectionLimit】),其次配置合理的最大进程数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值