问题
项目新更换了数据源driud,生产发版一周后突然发现所有的请求都不能响应了。

  1. 查看后台日志(info级别),并没有报错。
  2. 怀疑CPU跑满了,top命令查看,cup,内存消耗正常。应该不是GC出问题。
  3. jstack上场,由于日志没有进程号,无法直接用(擦!)。使用ulimit -a 查看文件描述符等限制 lsof -n|awk '{print $2}' | sort | uniq -c | sort -nr | more 获得进程号63330 jstack 63330 查看后发现很多线程都是WAITING状态
"http-nio-8080-exec-54" daemon prio=10 tid=0x0000000000e61000 nid=0xcc9 waiting on condition [0x00007f4a753d4000]java.lang.Thread.State: WAITING (parking)at sun.misc.Unsafe.park(Native Method)- parking to wait for  <0x00000007a143f230> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)at com.alibaba.druid.pool.DruidDataSource.takeLast(DruidDataSource.java:1732)at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1330)at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1198)at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4619)
  1. netstat -anp|grep 9085 发现 listen监听基本都是 close_wait

至此可以定位,所有的请求都被druid的获取连接操作阻塞了,因为数据链接没有释放,连接池中无可用连接,导致请求被阻塞了,不过druid也提供了相应的方案,如下

很多人遇到了连接泄露的情况,可见druid的官方issue,如https://github.com/alibaba/druid/issues/1160

park
public static void park(Object blocker)

  • 为了线程调度,在许可可用之前禁用当前线程。
  • 如果许可可用,则使用该许可,并且该调用立即返回;否则,为线程调度禁用当前线程,并在发生以下三种情况之一前,使其处于休眠状态:
    • 其他某个线程调用将当前线程作为目标调用 unpark;或者
    • 其他某个线程中断当前线程;或者
    • 该调用不合逻辑地(即毫无理由地)返回。

此方法不报告是哪个线程导致该方法返回。调用者应该重新检查最先导致线程暂停的条件。调用者还可以确定返回时该线程的中断状态。

Tomcat无响应问题相关推荐

  1. mysql事务锁导致tomcat崩溃_数据库连接池连接耗尽,导致tomcat请求无响应,呈现出假死状态...

    最困难的事情就是认识自己! 个人网站 ,欢迎访问! 前言:最近,测试部门的同事找到我,说他们测试时,没一会就发现服务接口请求一直无响应,Tomcat跟死掉了一样,也没有返回任何的错误响应,说让我赶紧排 ...

  2. 易语言程序假死优化_易语言假死无响应采用处理事件解决办法

    易语言假死无响应采用处理事件解决办法 处理事件() 一个比较简单的理解是:让程序反应过来 这个函数一般是用在延时前面或后面,如果不用的话程序很容易形成假死,造成程序无响应 如下图,虽然这个程序还在运行 ...

  3. 关于Spring MVC 文件大小超过限制后浏览器无响应解决方案

    最近在做一个ssm小项目,项目中有上传功能,本来是一个激情平常的功能.但当我配置好上传文件的大小后,一测试发现问题了.即使我项目中捕获到了MaxUploadSizeExceededException这 ...

  4. oracle系统资源,oracle占用系统资源很高sqlplus无响应

    TSP平台无法登录,后来我们重启tomcat,但还是不能登录.经检查,是数据库出问题.进入oracle服务器top一下,oracle进程占用资源很大,id剩余0.0%,而且负载迅速涨到156试图进入o ...

  5. 外发简历服务器响应失败怎么解决,频繁请求后台导致服务器无响应一般是什么原因呢...

    有一个按钮用来向后台请求数据,我已经限制了这个按钮,从发起请求到请求数据接收完之间按钮是不可点击的,但是我后台数据返回是很快的,如果快速频繁的点击它,仍然会导致它不断的向后台请求数据,然后请求无响应了 ...

  6. Ubuntu16.04 下的网易云出现网络异常、无法播放,界面无响应问题的统一解决

    能够在Linux系统下体验到原生界面的网易云音乐是件不错的事情,但是它总是经常性的出现网络异常,界面无响应的问题 为了听歌的体验,进行深入探究: 首先通过终端启用网易云音乐:sudo netease- ...

  7. pyqt designer connect无响应_如何用PyQt编写桌面程序,创建并打开播放列表?

    由于电脑上的短视频太多了,并且分别存放在各个子目录下,每次更新后想要整理视频比较麻烦,因此想用Python编写程序来辅助管理视频文件.其实写个Python脚本程序即可实现大器的需求,但为了多练习PyQ ...

  8. 在ESXi主机上关闭无响应的虚拟机

    适用情况 该方法适用于以下情况: ESXi主机上的虚拟机不能关闭. 虚拟机无响应且不能停止. 目的 这篇文章描述在ESXi环境中如何正确的关闭一台无响应的虚拟机. 注意: 这篇文章只适用于ESXi主机 ...

  9. eclipse打开处于无响应状态解决办法

    eclipse打开后处于无响应状态,变没有了反映,并且cup占用率为0.应该是非正常关机导致eclipse工作区的文件状态错误导致. 解决方案:在工作区目录中,有一个.metadata目录,里面是工作 ...

最新文章

  1. 2021 IDEA大会圆满落幕,一文回顾大会精彩看点
  2. 简单介绍Go语言错误处理异常捕获+异常抛出
  3. python3菜鸟教程pdf-Python 3 教程
  4. 关于this的指向问题
  5. PAT甲级1056 Mice and Rice:[C++题解]模拟、排名
  6. 搭建属于自己的wiki
  7. K8s 工程师必懂的 10 种 Ingress 控制器
  8. 关于用串口IDLE中断,DMA_GetCurrDataCounter()函数值不变的问题
  9. APP界面设计的视觉思维!
  10. 天津市七下计算机课程,七年级下册信息技术课程教案.doc
  11. 对家自动驾驶汽车出 Bug?马斯克幸灾乐祸:“哈哈!”
  12. xml规范及xml解析
  13. C程序设计--VC++6.0的使用(常用快捷键)
  14. 计算机桌面出现家庭组,win7系统桌面突然多出一个家庭组图标的解决方法
  15. 面试总结系列(一)------ 国际化中台事业部
  16. From表单邮箱后缀提示
  17. Google Professional Data Engineer(PDE)考试
  18. 利用Metasploit控制目标电脑(Win7_x64系统)
  19. Java实验6 --模拟物流快递系统程序设计
  20. 【CSS面试题】—CSS实现三角形

热门文章

  1. numpy 文件处理 —— 加载与写入
  2. TensorFlow strides 参数讨论
  3. 万有引力(Law of universal gravitation)
  4. Python 波浪线与补码
  5. Python 进阶 —— 使用 map reduce
  6. Tricks(二十六) —— 妙用关键字参数(keyword arguments)创建字典
  7. C++ const型成员函数与 non-const型成员函数
  8. 直接无序搜索 vs 先排序后搜索
  9. 从一个实例(整数幂指数)进行算法时间复杂度的分析
  10. 变形 圆形_板换角孔变形计圆形变身流线形