首页 > 其他分享 >线程阻塞案例分析

线程阻塞案例分析

时间:2023-07-11 09:34:28浏览次数:35  
标签:pinter webapps jstack 阻塞 案例 线程 日志 txt log4j

线程阻塞案例分析

一.Jstack打印快照

1.jmeter运行压测脚本

2.用jstack打印快照,下载到本地

jstack 112759 > log1.txt

jstack 112759 > log2.txt

jstack 112759 > log3.txt

3.在本地搜索是否有blocked关键字

二.分析代码

1.下载源码文件

cn.testfan.perf.beihe.pinter.http.CaseController.block(CaseController.java:60)

根据提示,找到casecontrokker的路径

/usr/src/tomcat-pinter/webapps/pinter/WEB-INF/classes/cn/testfan/perf/beihe/pinter/http

2.分析代码出错地方

打开jd-gui查看源码60行

发现没有加锁的表示:synchronized,但是此行调用了loger方法

3.去下载log4j的文件

路径:/usr/src/tomcat-pinter/webapps/pinter/WEB-INF/lib

下载这个文件到本地

根据提示路径:

at org.apache.log4j.Category.callAppenders(Category.java:204)

三.优化代码

调整log4j日志等级

1.找到log4j日志配置文件

路径:/usr/src/tomcat-pinter/webapps/pinter/WEB-INF/classes

2.调整日志等级

vi log4j.properties

提升日志等级为 ERROR

标签:pinter,webapps,jstack,阻塞,案例,线程,日志,txt,log4j
From: https://www.cnblogs.com/shaohuang/p/17509294.html

相关文章

  • 内存溢出案例实战
    内存溢出案例实战一.JVM内存参数配置1.给项目的tomcat的catalina.sh添加配置参数cd/usr/src/tomcat-pinter/binvicatalina.sh在第二行添加以下配置:JAVA_OPTS="-Xms512m-Xmx512m-Xmn256m-Xss1024k-XX:MetaspaceSize=512m-XX:MaxMetaspaceSize=512m-XX:+UseConcMarkSweepGC......
  • Zephyr入门教程 2 线程
    RTOS的必要性当你开始增加你的嵌入式应用的功能时,在单一的主循环和一些中断例程中做所有的事情变得越来越难。通常情况下,下一级的复杂性是某种状态机,你的电子设备的输出会根据这个(内部)状态而改变。如果你需要能够同时操作多个复杂的输入和输出呢?一个很好的例子是TCP/IP连接,通过这......
  • DI入门案例
        ......
  • Ioc入门案例
         ......
  • 堆垛机西门子PLC程序+输送线程序+触摸屏程序。 物流仓
    堆垛机西门子PLC程序+输送线程序+触摸屏程序。物流仓储。涵盖通信,算法,运动控制,屏幕程序,可电脑仿真测试。实际项目完整程序。西门子S7-1200+G120+劳易测激光测距博途V15.1编程采用SCL高级编程语言。无加密。延申科普:物流仓储是一个涉及到供应链管理和仓库操作的领域。它涵盖了从货......
  • 线程安全和可重入
    线程安全和可重入线程安全定义如果一个函数被多个线程并发执行时,这个函数不会出现异常,则称这个函数是线程安全的。线程安全的破坏如果这个函数被多个线程调用时,可能会修改同一个资源,则就可能破坏线程安全。例如,函数访问全局变量:#include<thread>#include<stdio.h>in......
  • Android 返回UI线程几种方法
    runOnUiThread()方法:在Activity或Fragment中,可以使用runOnUiThread()方法来在UI线程上运行代码。它接受一个Runnable对象,将其提交到UI线程的消息队列中执行。例如:runOnUiThread{//在UI线程上执行代码}Handler和post()方法:你可以使用Handler......
  • 线程池addWorker执行流程(添加工作线程)
    1//添加工作线程2privatebooleanaddWorker(RunnablefirstTask,booleancore){3//对线程池状态的判断以及对工作线程数量的判断4//外层for循环的标识5retry:6for(;;){7//获取ctl值8intc......
  • java 线程等待和唤醒方法
    java线程状态变迁图从图中可以看出Java线程等待方法是将线程从Runnable状态转换为Waiting状态,Java线程的唤醒方法是将线程从Waiting状态唤醒进入Runnable状态在Java中线程的等待和唤醒主要是分为3组:Object.wait()和Object.notify()LockSupport.park()和LockSupport.unp......
  • 1-MyBatisPlus 入门案例与简介
    1.入门案例MybatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提供效率。开发方式基于MyBatis使用MyBatisPlus基于Spring使用MyBatisPlus基于SpringBoot使用MyBatisPlusSpringBoot整合MybatisPlus具体实现步骤为:创建数据库......