jedisPool的getResource()处在WAITING,导致机器假死服务停止
2017-10-21 19:52
786 查看
有个后台计算的服务6台机器,全假死了,服务停止运算,一开好奇怪。自己重启了5台恢复线上,留一台查看原因。
通过jstack查看,发现接受mp的线程WAITING
通过可以看到jedisPool拿不到getResource,一查看代码原来忘记忘记maxWaitMillis,也是遇见鬼了
大部分故障都是细节引起的
通过jstack查看,发现接受mp的线程WAITING
java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000006addee0c8> (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 org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:524) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:433) at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:360) at redis.clients.util.Pool.getResource(Pool.java:40) at redis.clients.jedis.JedisPool.getResource(JedisPool.java:84) at com.sohu.snscommon.cluster.service.impl.OrMetaRedisClusterServiceImpl.getJd(OrMetaRedisClusterServiceImpl.java:111) at com.sohu.snscommon.cluster.service.impl.OrMetaRedisClusterServiceImpl.getItem(OrMetaRedisClusterServiceImpl.java:241) at com.sohu.sns_protobuf.service.impl.SnsProtoCacheServerImpl.loadCache(SnsProtoCacheServerImpl.java:44) at com.sohu.sns_protobuf.service.impl.SnsPersServerImpl.loadItemJson(SnsPersServerImpl.java:167) at com.sohu.sns_protobuf.utils.PersistenceUtil.getItem(PersistenceUtil.java:109) at com.sohu.sns.service.pull.service.FeedPullService.getUserRelation(FeedPullService.java:215) at com.sohu.sns.service.pull.service.FeedPullService.addPullMarkInternal(FeedPullService.java:172) at com.sohu.sns.service.pull.service.FeedPullService.addPullMark(FeedPullService.java:153) at com.sohu.sns.service.pull.mq.PullServerMQConsumer$1.run(PullServerMQConsumer.java:92) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744)
通过可以看到jedisPool拿不到getResource,一查看代码原来忘记忘记maxWaitMillis,也是遇见鬼了
大部分故障都是细节引起的
相关文章推荐
- 因为缺失POST GET注解而导致Failed processing arguments of org.jboss.resteasy.spi.metadata.ResourceLocator
- 因Window服务器自动更新并重启导致WebSphere服务停止服务故障一例
- 子线程导致 Windows 服务停止的情况(Topshelf 结合 Quartz.NET)
- IE10导致Microsoft管理控制台已停止服务的解决办法
- ORACLE位图索引导致的ORA-00060: deadlock detected while waiting for resource
- gin 协程并发导致服务停止
- 停止Password Manager Agent服务导致应用程序启动缓慢
- jedisPool.getResource()方法长时间无响应并且不报错
- 关闭迅雷“XLServicePlatform”服务 防止导致Win8假死的方法
- 关于COM服务之加载顺序,此时你可能出现程序卡死,假死等现象,因为com服务可能加载了一半,导致其他需要com的服务假死
- 由于DC的Net Logon服务被停止,导致客户端无法加入域
- java.lang.NoSuchMethodError: redis.clients.jedis.JedisPool.getResource()Lredis/clients/jedis/Jedis;
- 畸形URL能导致IIS5.0和exchange 2000停止服务
- JedisPool.getResource()方法卡死的解决办法
- http服务停止导致Ambari添加服务失败
- 一次dblink和硬解析频繁导致服务堵塞的排查记录
- PostgreSQL 服务启动后停止
- 停止不必要的服务
- windows下快速启动和停止服务
- 如何使用GetManifestResourceStream