server_ip:10.12.104.44,server_name:paidmsServer,exception_log:
>
java.io.IOException: A complete message could not be read on socket: 'weblogic.servlet.internal.MuxableSocketHTTP@327efd4 - idle timeout: '30000' ms, socket timeout: '5000' ms', in the configured timeout period of '60' secs
at weblogic.socket.SocketMuxer$TimeoutTrigger.trigger(SocketMuxer.java:799)
at weblogic.time.common.internal.ScheduledTrigger.run(ScheduledTrigger.java:243)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:229)
at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:223)
at weblogic.time.server.ScheduledTrigger.execute(ScheduledTrigger.java:50)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
最近的超时异常在整理的文档中找到了,一并分享。
为什么会产生java.net.SocketTimeoutException: Read timed out:
产生此问题的根本原因是客户端在发送请求的过程中,服务器只接受了很少的一部分参数,但是此后客户端没有再发数据导致服务器接受的数据并不完整,所以wls在等待了30秒后 idle timeout,连接管理器将连接杀掉,服务器抛错。
那为什么会产生超时呢?原因很多,但无非以下几种:
首先,就要说到网络问题,虽然此说法并不让人信服,但这是客观存在的问题,当然这主要是看频率,如果一个月出几次,那也只能归于网络传输的问题。
其次,不得不说客户端的问题,用户在处理请求的过程中强行关闭浏览器,os操作系统问题,网卡或交换机硬件问题等等。总之,是客户端的问题导致了连接的异常,应用是无法解决此类问题。
再次,如果此超时发生在sevlet和ejb之间就是web或者app其他的处理超时,也就是txbean的超时,比如app拿回的结果集过大,又要对每个结果进行远程校验,web上载的过程中做了较长时间的解析等等。但都是web或app应用程序处理时间的问题或者sql的问题。
此外请注意,此超时可能由于很多原因,很多程序的异常都可能引起。例如同步提交等等
解决方案:
如果发生在web和客户段之间,也就是前端和servlet之间:
1,此问题大都发生在使用频率很大,如查询(query和dep都是查询的功能,且使用频率很大)的功能上,但是应用是无法控制客户端的行为,故此类问题,应用是无法用代码解决的。
只能在生产抛错时找到对应的客户端,但此类问题并发量大,客户端并不容易找。如果一周异常控制在一定数量内是无需关注的。
2,如果此类问题大批量发生,那就要找到发生问题集中的客户端群,检查物理交换机或者网卡等硬件的连通问题,或者客户端os。
如果发生在sevlet和ejb之间:
1, 将tras的bean的时间调长,可以解决部分问题,但不推荐,也不是解决问题的根本途径。
2, 调优sql减少查询时间,减少db层带来的问题。
3, 对应用的处理过程进行优化,降低处理的时间,如果应用处理的时间无法减少,可考虑采用异步的方式,发请求,返回请求,处理,返回数据。
4,其他类型引起的就要查程序流程,看处理的是否得当,具体要分析程序了
分享到:
相关推荐
NULL 博文链接:https://mymobile.iteye.com/blog/1853228
java.io.Reader 和 java.io.InputStream 的区别
Exception in thread “main” redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out at redis.clients.util.RedisInputStream.ensureFill...
广东外语外贸大学思科信息学院计算机专业JAVA课程专业中的一小段代码
code:500 msg: java.net.SocketTimeoutException: connect timed out at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:424) at ...
报错信息: can not resolve hostname 解决方法:去C:\Windows\System32\drivers\etc\hosts 里配置一下这个hostname和对应的IP ...Fri Feb 14 10:30:36 CST 2020, null, java.net.SocketTimeoutException: callTimeou
主要介绍了java socket长连接中解决read阻塞的3个办法,本文取了折中的一个方法,并给出代码实例,需要的朋友可以参考下
poi处理excel文件的小程序:自己写的poi处理excel文件的小程序,直接可以使用
android客户端通过webservice 获取天气预报 本人测试 绝对可用
在该分析服务的日志中发现了某个数据库操作产生了 SocketTimeoutException。 开发同学一开始希望通过调整 MongoDB Java Driver 的超时参数来规避这个问题。 但经过详细分析之后,这样是无法根治问题的,而且超时配置...