• 线程死锁分析及定位方法


    混合测试过程中,LR报超时错误。

    分析:造成这种现象的原因有很多,可能是网络原因,但测试时用的是局域网,所以不可能是网络的问题。也可能是CPU使用过高导致服务器端负载过大,无法处理客户端的请求导致的,此时去检查应用服务器和数据库服务器的CPU,发现还没有达到60%,所以可以排除资源瓶颈问题(当时的测试场景资源指标是应用服务器CPU不能超过60%,数据库服务器CPU不能超过80%)。因为基准测试和负载测试都是测单个交易,而混合场景是把多个交易放到一起发压,既然是多个交易,就有可能存在死锁问题,而混合场景的测试目的是为了检测是否存在线程死锁和数据库死锁。

    死锁是因为多线程访问共享资源,由于访问顺序不当造成的,通常是一个线程锁定了一个资源A,而又想去锁定资源B,在另一个线程中,锁定了资源B,而又想去锁定资源A以完成自身的操作,两个线程都想得到对方的资源,而不愿意释放自己的资源,造成两个线程都在等待,而无法执行的情况。

    定位:用JDK自带的命令jstack -pid去查看线程信息,jstack很快就帮我们找到了死锁的位置(在实际运行中,往往dump一次信息,还不足以确认问题,建议多dump几次,如果每次dump都指向同一个问题,那么就可以确定是这个问题导致的线程死锁)

    根据报错地址找到对应的代码,交由开发处理即可

  • 相关阅读:
    elementUI table中的button 操作
    数组
    数组,字符串,数字之间的相互转换
    Element upload
    Vue中涉及到的三目运算与v-if结合
    ElementUI的input用法
    javascript的正则表达式
    Vue表单+Vue全局指令 v-focus 的引用
    ztree 异步加载大数据(一)
    vue mixins 混入项目实例
  • 原文地址:https://www.cnblogs.com/lanyy/p/8588224.html
Copyright © 2020-2023  润新知