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的耗费是巨大的。尽量避免使用不必要的异常替代正常的逻辑判断。

  • 相关阅读:
    java 13-6 Char的包装类Character
    java13-5 JDK1.5以后的一个新特性和Integer的面试题
    java 13-4 Integer和String、int之间的转换,进制转换
    java 13-3 int类型的包装包Integer
    java 13-2 Arrays工具类
    java 13-1 数组高级二分查找
    java12
    kafka语句示例
    zookeeper安装
    redhat java配置
  • 原文地址:https://www.cnblogs.com/zhaoguan_wang/p/4579146.html
Copyright © 2011-2022 走看看