基于jstack的一次问题调查
2017-08-04 14:41
253 查看
jstack
http://www.open-open.com/lib/view/open1456744049953.html http://wenku.baidu.com/link?url=XGRAXwZGpPIyvYzcs0fqOGazbnKWWy6tsuDk5XhPUmVI4Y9jOT5TiYf6JVq0sPGafvMJmZFs1dNDlNtovldedF5xwr9ViMvv6WdRSaTGkn_
(案例:转)公司的一个web应用项目运行了很长一段时间,达半年之久,前段时间突然出现了服务不可用的情况,所有的请求都不可达,服务彻底挂了。查看tomcat进程还在,cpu使用率低,一时没找着问题,重启了服务。过了两天,又出现了这种情况, 开始排查最近更新上线的代码,但是也没有发现可疑之处。
开始怀疑JVM内存不够用了,通过jmap/jstat查看后,也没有发现存在JVM内存不够用,或者GC太频繁或者是FGC耗时太久的情况。
接着下来用jstack -F pid 把所有的线程信息dump下来,发现了很多“Thread 2341: IN_NATIVE”的线程,而且都来自同一个类;定位到该类,里面用了socket去跟第三方接口做交互,而socket没有设置SoTimeout时间,这样的话,socket将永久地等待,直到inputStream有数据; socket.setSoTimeout(3000)之后,报出了很多Read
timed out 的异常信息,很明显就是第三方接口出问题了。
所以出现故障的原因就是:一个http请求过来,tomcat接收到请求,分配一个worker Thread处理它,处理该请求的代码用到了前面提到的类,该worker Thread将永久处于socket.read()方法的wait状态或者说是IN_NATIVE状态;当时间一长,所有的worker thread都被占用,都处于socket.read()方法的wait状态后,tomcat没有worker
thread处理任何的http请求了,故而应用会彻底挂掉;
http://www.open-open.com/lib/view/open1456744049953.html http://wenku.baidu.com/link?url=XGRAXwZGpPIyvYzcs0fqOGazbnKWWy6tsuDk5XhPUmVI4Y9jOT5TiYf6JVq0sPGafvMJmZFs1dNDlNtovldedF5xwr9ViMvv6WdRSaTGkn_
(案例:转)公司的一个web应用项目运行了很长一段时间,达半年之久,前段时间突然出现了服务不可用的情况,所有的请求都不可达,服务彻底挂了。查看tomcat进程还在,cpu使用率低,一时没找着问题,重启了服务。过了两天,又出现了这种情况, 开始排查最近更新上线的代码,但是也没有发现可疑之处。
开始怀疑JVM内存不够用了,通过jmap/jstat查看后,也没有发现存在JVM内存不够用,或者GC太频繁或者是FGC耗时太久的情况。
接着下来用jstack -F pid 把所有的线程信息dump下来,发现了很多“Thread 2341: IN_NATIVE”的线程,而且都来自同一个类;定位到该类,里面用了socket去跟第三方接口做交互,而socket没有设置SoTimeout时间,这样的话,socket将永久地等待,直到inputStream有数据; socket.setSoTimeout(3000)之后,报出了很多Read
timed out 的异常信息,很明显就是第三方接口出问题了。
所以出现故障的原因就是:一个http请求过来,tomcat接收到请求,分配一个worker Thread处理它,处理该请求的代码用到了前面提到的类,该worker Thread将永久处于socket.read()方法的wait状态或者说是IN_NATIVE状态;当时间一长,所有的worker thread都被占用,都处于socket.read()方法的wait状态后,tomcat没有worker
thread处理任何的http请求了,故而应用会彻底挂掉;
相关文章推荐
- 记一次Spark集群查询速度变慢的问题调查
- python - 用遗传算法解决0-1背包问题,遗传算法是基于概率论的,因此不一定能一次命中最优解
- 一次因内存覆盖引起的system dump问题分析,基于linux的crash工具。
- 记一次内存占用问题的调查过程
- 关于基于Event Sourcing模式实现的领域模型如何处理模型重构的问题的思考
- 由一次mycat+mysql水平拆分集群问题引发的思考
- 记录一次帮策划写的基于VBA的数据转化工具
- 记一次greys查问题过程
- ffmpeg,记一次录音文件信息里面码率,时间丢失的问题。
- 记录一次定位死锁的问题
- 【hadoop2.2(yarn)】基于yarn成功执行分布式map-reduce,记录问题解决过程。
- 基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案
- maven 记录一次由于父级依赖无法自动下载问题导致maven Dependences库没有的问题
- 定位问题解决问题-记录一次事件
- Wcf、Windows Index Service、 Windows Search技术调查遇到的问题
- JSP,mysql,tomcat下(基于struts2)中文及其乱码问题的解决
- 关于onchange提交一次file文件的问题
- 一次SQLServer数据库宕机问题
- 一次RAC共享磁盘映射问题导致RAC异常重启的故障处理过程
- 旅游规划-单源最短路问题基于Dijkstra来考虑距离以及等距离时按收费更新来更新路径