zoukankan      html  css  js  c++  java
  • 【性能诊断】六、并发场景的性能分析(windbg案例,大量的内部异常造成CPU飙升)

          在做产品的某个核心模块的性能优化时,发现压到100并发时应用服务器的CPU就飙升至90%以上,50并发以后TPS就基本定格在一个数值上。使用性能监视器收集应用服务器的数据,发现每秒的.NET CLR Exceptions数据特别高,且异常数量与CPU使用率的曲线呈正比例的关系。

    image

          并发测试的业务结果是正确的,LoadRunner也没有发现大量的错误,那么大量的内部异常从哪儿来的呢?使用windbg输出所有异常信息,查阅Log日志。

    打开windbg,attach到指定进程,设置捕获异常并输出的命令:sxe -c "!pe;!clrstack;g" clr

    也可以直接使用.logopen命令将系统代码中的内部异常日志输出到文件中。

    image

    image

    根据异常堆栈我们可以很快定位到源代码。

    在产品中不少地方存在这样代码,我们进行自测或测试人员进行功能性的单点测试时基本不会有什么问题,但如果此代码处在循环中调用或高并发场景下,CPU的耗费是巨大的。尽量避免使用不必要的异常替代正常的逻辑判断。

  • 相关阅读:
    2020 Python组蓝桥杯
    Servlet学习
    Tomcat学习
    数据库连接池
    MySQL的设计
    时间复杂度————被list.insert坑了
    PCA 算法核心:高维度向量向低维度投影
    初识Django,了解一下大概流程
    python编程基础之三十八
    python编程基础之三十七
  • 原文地址:https://www.cnblogs.com/zhaoguan_wang/p/4579146.html
Copyright © 2011-2022 走看看