java.net.SocketTimeoutException: Read timed out:

本文探讨了Java中SocketTimeoutException产生的多种原因,包括网络问题、客户端异常操作、以及Servlet与EJB间通信超时等问题,并提供了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自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,其他类型引起的就要查程序流程,看处理的是否得当,具体要分析程序了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值