转自http://www.csdnjava.com/forum.php?mod=viewthread&tid=58526
为什么会产生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 的超时参数来规避这个问题。 但经过详细分析之后,这样是无法根治问题的,而且超时配置...