NO.30 要你命3000-宕机问题面面观:3.案例-三方交互未设置连接、读取超时时间
2010-05-16 12:16
411 查看
某年某月某日,客户的一个负责人跑过来说,系统登不上去了。
1.第1招(NO.28宕机问题简单定位分析法 1.1查看长时驻留的请求URL):马上打开IE访问weblogic console,发现登不上去;
(如果能登上去,你会看到 Execute Threads中可能80~90%为同一个URL)
2.第2招 (NO.28宕机问题简单定位分析法 2.查看是否OutOfMemory):tail -f nohup.out未发现OOM相关信息
3.没办法了使用第3招(NO.28宕机问题简单定位分析法 1.2.kill -3 捕获当前驻留线程信息):好了,从上往 下看,终于找到了有价值的一段:
当时很纳闷,这个httpclient加过了连接超时时间啦?怎么还出这种问题呢,后来一查再发现,还有个读取超时时间。(具体代码可参见NO.19 HttpConnection、HttpClient使用注意点(附http连接工具:采用HttpClient支持代理Proxy、支持用户名密码、支持域Domain模式) ).
修正后,再未发生过类似问题了。
1.第1招(NO.28宕机问题简单定位分析法 1.1查看长时驻留的请求URL):马上打开IE访问weblogic console,发现登不上去;
(如果能登上去,你会看到 Execute Threads中可能80~90%为同一个URL)
2.第2招 (NO.28宕机问题简单定位分析法 2.查看是否OutOfMemory):tail -f nohup.out未发现OOM相关信息
3.没办法了使用第3招(NO.28宕机问题简单定位分析法 1.2.kill -3 捕获当前驻留线程信息):好了,从上往 下看,终于找到了有价值的一段:
Full thread dump Java HotSpot(TM) Server VM (1.4.2_18-b06 mixed mode): "File Reaper" daemon prio=10 tid=0x0095f180 nid=0xa9 in Object.wait() [0x2d34f000..0x2d34fc28] at java.lang.Object.wait(Native Method) - waiting on <0x4bbbf670> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) - locked <0x4bbbf670> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) at org.apache.commons.io.FileCleaningTracker$Reaper.run(FileCleaningTracker.java:205) "Thread-8" prio=5 tid=0x00a81ee0 nid=0xa1 runnable [0x2d69e000..0x2d69fc28] at java.net.PlainSocketImpl.isClosedOrPending(PlainSocketImpl.java:589) - waiting to lock <0x3d29a3b0> (a java.lang.Object) at java.net.PlainSocketImpl.getOutputStream(PlainSocketImpl.java:383) - locked <0x3d29a340> (a java.net.PlainSocketImpl) at java.net.Socket$3.run(Socket.java:758) at java.security.AccessController.doPrivileged(Native Method) at java.net.Socket.getOutputStream(Socket.java:755) at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:745) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324) ......
当时很纳闷,这个httpclient加过了连接超时时间啦?怎么还出这种问题呢,后来一查再发现,还有个读取超时时间。(具体代码可参见NO.19 HttpConnection、HttpClient使用注意点(附http连接工具:采用HttpClient支持代理Proxy、支持用户名密码、支持域Domain模式) ).
修正后,再未发生过类似问题了。
相关文章推荐
- socket连接超时的问题,设置限定时间
- NO.29 要你命3000-宕机问题面面观:2.案例-死循环
- NO.33 要你命3000-宕机问题面面观 4.案例-获取全表数据致OOM
- oracle连接由于防火墙设置导致超时的问题
- 使用Hibernate + MYSQL数据库问题(Hibernate连接数据库超时设置autoReconnect=true)
- “超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。”问题的解决方法
- HttpClient设置连接超时时间
- Httpclient 设置读取超时及连接重试等配置
- 基于XSocket框架的socket编程技巧(设置连接的超时时间和最大空闲时间)
- SQL远程连接超时时间已到问题
- Socket 关于设置Socket连接超时时间
- Socket 关于设置Socket连接超时时间
- Android 编程技巧-设置 ADB 连接超时时间
- NO.24 要你命3000-宕机问题面面观:0.开篇
- HttpClient代理IP及设置连接读取超时
- java測试网络连接是否成功并设置超时时间
- 服务器上传,时间超时 tomcat 如何设置保持连接
- TCP编程:client设置超时收包时间,收包失败,关闭连接。
- 关于redis使用set时设置超时时间的问题
- 在从池中获取连接之前超时时间已过,所有池连接都已被使用并已达到最大池大小的问题解决方法