`
新来的菜鸟
  • 浏览: 132671 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java.net.SocketTimeoutException: Read timed out:

阅读更多

 

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操作系统问题,网卡或交换机硬件问题等等。总之,是客户端的问题导致了连接的异常,应用是无法解决此类问题。

再次,如果此超时发生在sevletejb之间就是web或者app其他的处理超时,也就是txbean的超时,比如app拿回的结果集过大,又要对每个结果进行远程校验,web上载的过程中做了较长时间的解析等等。但都是webapp应用程序处理时间的问题或者sql的问题。

此外请注意,此超时可能由于很多原因,很多程序的异常都可能引起。例如同步提交等等

 

解决方案:

 

如果发生在web和客户段之间,也就是前端和servlet之间:

1,此问题大都发生在使用频率很大,如查询(querydep都是查询的功能,且使用频率很大)的功能上,但是应用是无法控制客户端的行为,故此类问题,应用是无法用代码解决的。

只能在生产抛错时找到对应的客户端,但此类问题并发量大,客户端并不容易找。如果一周异常控制在一定数量内是无需关注的。

2,如果此类问题大批量发生,那就要找到发生问题集中的客户端群,检查物理交换机或者网卡等硬件的连通问题,或者客户端os

如果发生在sevletejb之间:

1,  trasbean的时间调长,可以解决部分问题,但不推荐,也不是解决问题的根本途径。

2,  调优sql减少查询时间,减少db层带来的问题。

3,  对应用的处理过程进行优化,降低处理的时间,如果应用处理的时间无法减少,可考虑采用异步的方式,发请求,返回请求,处理,返回数据。

4,其他类型引起的就要查程序流程,看处理的是否得当,具体要分析程序了

 

 

分享到:
评论
1 楼 lxfnog 2015-10-27  

相关推荐

    java.net.SocketTimeoutException: Receive timed out

    标题中的“java.net.SocketTimeoutException: Receive timed out”是一个Java编程中常见的异常,通常发生在进行网络通信时,接收数据超时。这个异常是由于Socket在等待接收数据时超过了预设的超时时间,没有接收到...

    java.io.Reader 和 java.io.InputStream 的区别

    ### Java.io.Reader与Java.io.InputStream的关键差异解析 在深入探讨`java.io.Reader`与`java.io.InputStream`的具体差异之前,我们首先需要理解这两者在Java I/O操作中的基础角色。`java.io.Reader`和`java.io....

    Redis连接超时异常的处理方法

    Exception in thread “main” redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out  at redis.clients.util.RedisInputStream.ensureFill...

    Redis常见客户端异常.docx

    redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out 该异常的原因有: 1. 读写超时设置的过短:可以调整读写超时的设置,以满足实际情况。 2. 命令本身...

    nacos-dubbo:dubbo微服务使用nacos注册中心

    code:500 msg: java.net.SocketTimeoutException: connect timed out at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:424) at ...

    NewClass.java

    广东外语外贸大学思科信息学院计算机专业JAVA课程专业中的一小段代码

    java socket长连接中解决read阻塞的3个办法

    如果在指定的时间内没有接收到数据,`read()`方法会抛出一个`SocketTimeoutException`,从而强制退出阻塞状态。示例代码如下: ```java Socket socket = new Socket(host, port); socket.setSoTimeout(100); // ...

    JAVA开发JAVA本地监听与远程端口扫描(源代码+论文)

    在Java中,这通常通过`java.net.Socket`类或`java.net.SocketTimeoutException`来实现。下面是一个基本的远程端口扫描示例: ```java import java.io.IOException; import java.net.InetAddress; import java.net....

    poi处理excel文件的小程序

    在Java编程中,Apache POI库是处理Excel文件的常用工具,尤其在数据分析、自动化报告生成等领域有着广泛的应用。本程序"poi处理excel文件的小程序"就是基于Apache POI实现的,用于读取和操作Excel数据。 1. **...

    DnsQuery_SUN_java.zip

    - 缓存时间可以通过系统属性`sun.net.dns.cache.timeout`进行设置,默认值为60秒。 3. **DNSSEC(DNS Security Extensions)**: - Java支持DNSSEC,可以验证DNS查询响应的来源和完整性。这通过`java.net.DNS...

    android中简单的客户端与服务器[归类].pdf

    import java.net.SocketTimeoutException; import java.net.UnknownHostException; public class ClientActivity extends Activity { public EditText messageEditText; @Override public void onCreate(Bundle...

    java 网络编程

    4. **HTTP和HTTPS**:Java的`java.net.HttpURLConnection`类用于处理HTTP和HTTPS请求,这是Web应用中常见的网络通信方式。HTTP是超文本传输协议,用于传输超媒体信息;HTTPS是在HTTP基础上加入了SSL/TLS加密,提高了...

    hbase常见错误整理3年运维经验整理

    DFSOutputStream ResponseProcessor exception for block blk_1439491087566691588_6207 java.net.SocketTimeoutException: 69000 millisecond timeout while waiting for channel to be ready for read....

    java 多线程ftp代码

    2. Java FTP库:Java标准库中的`java.net.FTPSClient`和`java.net.FTPClient`类提供了FTP功能。此外,Apache Commons Net库提供了更强大的`FTPClient`,支持FTP、FTPS(FTP over SSL/TLS)以及SFTP(SSH File ...

    使用Android实现联网

    - `android.net`包:除了`java.net`中的类,还提供了额外的网络访问接口,如URI类。 - `android.net.http`包:处理SSL证书,支持安全的HTTPS连接。 - `android.net.wifi`包:用于管理WiFi相关的功能,如扫描、...

    简单的UDP通信JAVA代码

    1. **设置超时**:Java的`Socket`类并不直接支持UDP的超时设置,但可以通过`SocketTimeoutException`来间接实现。我们可以在`DatagramSocket.receive()`方法上设置一个超时,如果在指定时间内没有接收到数据,就会抛...

    java Socket编程基础代码

    在Java中,`java.net.Socket`类代表了TCP协议的Socket,而`java.net.ServerSocket`则用于创建监听客户端连接的服务器端Socket。 1. **创建服务器端Socket** - `ServerSocket(int port)`:创建一个监听指定端口的...

Global site tag (gtag.js) - Google Analytics