昨晚测试环境遇到了一个问题,情况是这样的:

1、系统访问了两个特定的帆软报表之后,其他所有请求被阻塞,导致 nginx 报 504 的错误。

2、帆软报表仍然能访问。

分析、猜测与定位:

1、既然帆软报表仍然能访问,说明 tomcat 和 nginx 服务正常。

2、既然特定的报表有问题,把特定的报表文件设置为空,看看是否是仍然出现问题。试了一下,设置为空的帆软报表被访问,不会导致上述问题。那说明,确实是这两个报表导致了请求阻塞。这两个报表 cpt 的特征是有很多数据集。

3、所有获取后台数据的请求被阻塞,有点像数据源相关出问题了,初步猜测问题出在获取数据库的连接那块;帆软报表里数据集越多,帆软应用需要获取的数据库连接数就越多。

jstack 查看 tomcat 进程的线程情况:

1、很多线程都在从数据库连接池获取连接的方法 getConnection 上阻塞

org.apache.tomcat.dbcp.pool2.impl.LinkedBlockingDeque.takeFirst

2、猜测是帆软应用的数据库连接池,从应用系统的数据库连接池把 Connection 拿完,导致应用系统获取数据库连接动作被阻塞。

继续尝试:

1、把帆软的数据库连接池的最大连接数设置为 1,问题不复现。

2、查看应用数据系统的数据库连接池最大连接数,尽然未配置。翻了下连接池的源码,默认最大连接数 8。把应用系统的数据库连接池的最大连接数,配成与数据库最大连接数一致,100。问题修复。

总体来看,根本原因就是应用系统的数据库连接池的最大连接数等相关参数未配。

往往越是简单的配置,越是最难排查的...

上午的 3 个小时耗没了!

查看java线程堵塞排查_记一次应用线程被阻塞的问题排查相关推荐

  1. java redis使用卡死_记一次找因 redis 使用不当导致应用卡死 bug 的过程

    原标题:记一次找因 redis 使用不当导致应用卡死 bug 的过程 作者:小木 my.oschina.net/xiaomu0082/blog/2990388 首先说下问题现象:内网sandbox环境 ...

  2. 查看java运行时参数_查看JVM运行时参数

    1.查看JVM运行时参数 -XX:+PrintFlagsInitial -XX:PrintFlagsFinal -XX:+UnlockExperimentalVMOptions 解锁实验参数 -XX: ...

  3. java thread 内存泄露_记一次ThreadLocal引发的内存泄露

    概念 ​首先解释下内存溢出和内存泄露的概念.内存溢出一般指的是out of memory,也就是我们经常说的OOM,常发生在堆,方法区和方法栈.内存泄露指的是一段程序在申请内存空间后,无法释放已经申请 ...

  4. 查看java进程占用内存_如何查看java进程大批占用内存

    如何查看java进程大量占用内存 你好,方法如下: 可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: ...

  5. linux 查看java版本和路径_在linux中查看jdk的版本以及安装路径

    如何在一台Linux服务器上查找JDK的安装路径呢? 有那些方法可以查找定位JDK的安装路径?是否有一些局限性呢? 下面总结了一下如何查找JDK安装路径的方法. 1:echo $JAVA_HOME 使 ...

  6. log4j 打印线程号配置_日志配置log4j 打印线程号

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # Set root logger level to WARN and a ...

  7. getconnectiontimeoutexception 网络问题排查_家里wifi信号差?给小白的无线排查操作指南...

    家用无线信号排查手册 你是不是发现总会有这样的一些情况,网络突然觉得很慢,或经常连接不到无线信号?一般人在家里遇到这种情况,最简单的办法就是关掉wifi,我用流量还不行么?(土豪--)在这里分享一下排 ...

  8. linux 内存溢出排查_记一次JAVA 线上故障排查完整套路

    JAVA线上故障排查全套路 线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍.同时例如jstack.jmap等工具也 ...

  9. java 监控 native 内存_记一次java native memory增长问题的排查

    1.摘要 最近排查了一个比较灵异的线上jvm内存持续增长的问题,排查过程异常艰辛,但是最后竟然是用最简单的办法搞定了-- 2.现象 线上机器部署了两个java实例,在运行几天后java开始吃swap空 ...

最新文章

  1. 第八章 Health Check
  2. Android 第二课 Intent
  3. 【OCR技术系列之八】端到端不定长文本识别CRNN代码实现
  4. android点击左上角划出,使用Android中的Path和RectF在左上角右上角左下角绘制圆角...
  5. C语言 strcpy函数实现
  6. mysql +cobar_数据库中间件Cobar功能探究
  7. AutoCAD_FILEDIA
  8. 中国轨道交通设备行业建设投资规模及十四五产量趋势研究报告2021-2027年版
  9. Android大话设计模式 第二章----单一职责原则 乔峰VS慕容复
  10. 基于负熵的快速不动点算法
  11. 店铺微信公众号怎么创建?
  12. qq修改实名认证已达上限_王者荣耀实名认证系统,怎么二次修改
  13. 【PM模块】预防性维护
  14. Yoshua Bengio——《Deep Learning》学习笔记1
  15. 关于阿里云服务器ECS与域名的绑定详细过程介绍
  16. 【GD32】GD32读取ADC数据
  17. 金色css颜色代码大全,CSS颜色代码大全
  18. 聚焦华南医药创新,9月CPhI P-MEC China华南首站定档!
  19. ubuntu桌面版下配置锐捷客户端
  20. 基于JSP+Servlet+MySQL+Bootstrap的防疫知识在线问答系统

热门文章

  1. nginx负载均衡基于ip_hash的session粘帖
  2. Java并发编程(04):线程间通信,等待/通知机制
  3. 重装Windows后修复Linux引导
  4. 用户管理实用命令(第二版)
  5. MySQL学习笔记_10_MySQL高级操作(下)
  6. 蚌埠学院官网综合新闻条目抓取
  7. F - 你这是第一次让我看到落泪了呢 POJ - 3661Running 区间DP
  8. POI不同版本替换Word模板时的问题
  9. 关于北京皮纹智力测量与台湾皮纹测量智力测试争议的几点回应之二
  10. Vue 模块化开发(构建项目常用工具)