Tomcat无响应问题
问题:
项目新更换了数据源driud,生产发版一周后突然发现所有的请求都不能响应了。
- 查看后台日志(info级别),并没有报错。
- 怀疑CPU跑满了,top命令查看,cup,内存消耗正常。应该不是GC出问题。
- jstack上场,由于日志没有进程号,无法直接用(擦!)。使用
ulimit -a
查看文件描述符等限制lsof -n|awk '{print $2}' | sort | uniq -c | sort -nr | more
获得进程号63330jstack 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)
- 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无响应问题相关推荐
- mysql事务锁导致tomcat崩溃_数据库连接池连接耗尽,导致tomcat请求无响应,呈现出假死状态...
最困难的事情就是认识自己! 个人网站 ,欢迎访问! 前言:最近,测试部门的同事找到我,说他们测试时,没一会就发现服务接口请求一直无响应,Tomcat跟死掉了一样,也没有返回任何的错误响应,说让我赶紧排 ...
- 易语言程序假死优化_易语言假死无响应采用处理事件解决办法
易语言假死无响应采用处理事件解决办法 处理事件() 一个比较简单的理解是:让程序反应过来 这个函数一般是用在延时前面或后面,如果不用的话程序很容易形成假死,造成程序无响应 如下图,虽然这个程序还在运行 ...
- 关于Spring MVC 文件大小超过限制后浏览器无响应解决方案
最近在做一个ssm小项目,项目中有上传功能,本来是一个激情平常的功能.但当我配置好上传文件的大小后,一测试发现问题了.即使我项目中捕获到了MaxUploadSizeExceededException这 ...
- oracle系统资源,oracle占用系统资源很高sqlplus无响应
TSP平台无法登录,后来我们重启tomcat,但还是不能登录.经检查,是数据库出问题.进入oracle服务器top一下,oracle进程占用资源很大,id剩余0.0%,而且负载迅速涨到156试图进入o ...
- 外发简历服务器响应失败怎么解决,频繁请求后台导致服务器无响应一般是什么原因呢...
有一个按钮用来向后台请求数据,我已经限制了这个按钮,从发起请求到请求数据接收完之间按钮是不可点击的,但是我后台数据返回是很快的,如果快速频繁的点击它,仍然会导致它不断的向后台请求数据,然后请求无响应了 ...
- Ubuntu16.04 下的网易云出现网络异常、无法播放,界面无响应问题的统一解决
能够在Linux系统下体验到原生界面的网易云音乐是件不错的事情,但是它总是经常性的出现网络异常,界面无响应的问题 为了听歌的体验,进行深入探究: 首先通过终端启用网易云音乐:sudo netease- ...
- pyqt designer connect无响应_如何用PyQt编写桌面程序,创建并打开播放列表?
由于电脑上的短视频太多了,并且分别存放在各个子目录下,每次更新后想要整理视频比较麻烦,因此想用Python编写程序来辅助管理视频文件.其实写个Python脚本程序即可实现大器的需求,但为了多练习PyQ ...
- 在ESXi主机上关闭无响应的虚拟机
适用情况 该方法适用于以下情况: ESXi主机上的虚拟机不能关闭. 虚拟机无响应且不能停止. 目的 这篇文章描述在ESXi环境中如何正确的关闭一台无响应的虚拟机. 注意: 这篇文章只适用于ESXi主机 ...
- eclipse打开处于无响应状态解决办法
eclipse打开后处于无响应状态,变没有了反映,并且cup占用率为0.应该是非正常关机导致eclipse工作区的文件状态错误导致. 解决方案:在工作区目录中,有一个.metadata目录,里面是工作 ...
最新文章
- 2021 IDEA大会圆满落幕,一文回顾大会精彩看点
- 简单介绍Go语言错误处理异常捕获+异常抛出
- python3菜鸟教程pdf-Python 3 教程
- 关于this的指向问题
- PAT甲级1056 Mice and Rice:[C++题解]模拟、排名
- 搭建属于自己的wiki
- K8s 工程师必懂的 10 种 Ingress 控制器
- 关于用串口IDLE中断,DMA_GetCurrDataCounter()函数值不变的问题
- APP界面设计的视觉思维!
- 天津市七下计算机课程,七年级下册信息技术课程教案.doc
- 对家自动驾驶汽车出 Bug?马斯克幸灾乐祸:“哈哈!”
- xml规范及xml解析
- C程序设计--VC++6.0的使用(常用快捷键)
- 计算机桌面出现家庭组,win7系统桌面突然多出一个家庭组图标的解决方法
- 面试总结系列(一)------ 国际化中台事业部
- From表单邮箱后缀提示
- Google Professional Data Engineer(PDE)考试
- 利用Metasploit控制目标电脑(Win7_x64系统)
- Java实验6 --模拟物流快递系统程序设计
- 【CSS面试题】—CSS实现三角形