`

一个关于java.net.Socket的超时的问题

    博客分类:
  • JSP
阅读更多
从异常信息中,可以看到是read timed out,应该是Socket在读取Post过来的参数时“后继无人”,造成读取超时。因为底层实现是java.net.Socket
,而在Socket的read过程中SO_TIMEOUT参数是设置读取超时的。所以从这方面入手,提出以下几点建议供参考:

    1.启用native i/o
    2.增加Socket Readers,这是一个百分比,默认是33,从1-99,增加这个参数可以提高服务端接收客户端请求的速度和能力。
    3.增加执行队列。
    以上参数在server- >Configuration- >tuning中可以设置。

    注意:以上参数调整必须先从测试环境中以近似压力测试后有效再应用于生产环境。

======= 2007-07-06 09:28:22 您在来信中写道:=======

>各位老师,您好:
>
> 昨天中午到下午4点,医院端应用dump了3次,去年11月份二期切换的时候也频繁dump,最近有愈加频繁的趋势。
>
> 以下是现场发回的控制台日至,烦请各位老师帮助分析原因,谢谢!
>
>#### <2007-7-5 20时05分29秒 GMT+08:00 >  <Error >  <HTTP >  <loopback >  <his_managedServer1 >  <ExecuteThread: '2' for queue:
'weblogic.kernel.Default' >  < <WLS Kernel > >  < >  <BEA-101017 >  <[ServletContext(id=1681284293,name=his,context-path=/his)] Root cause
of ServletException.
>java.net.SocketTimeoutException: Read timed out
>        at java.net.SocketInputStream.socketRead0(Native Method)
>        at java.net.SocketInputStream.read(SocketInputStream.java(Compiled Code))
>        at weblogic.servlet.internal.PostInputStream.read(PostInputStream.java(Compiled Code))
>        at weblogic.servlet.internal.ServletInputStreamImpl.read(ServletInputStreamImpl.java(Compiled Code))
>        at weblogic.servlet.internal.ServletRequestImpl.mergePostParams(ServletRequestImpl.java(Compiled Code))
>        at weblogic.servlet.internal.ServletRequestImpl.parseQueryParams(ServletRequestImpl.java(Inlined Compiled Code))
>        at weblogic.servlet.internal.ServletRequestImpl.getParameter(ServletRequestImpl.java(Inlined Compiled Code))
>        at weblogic.servlet.internal.ServletRequestImpl.getParameter(ServletRequestImpl.java(Compiled Code))
>        at com.neusoft.unieap.util.RequestUtil. <init >(RequestUtil.java(Inlined Compiled Code))
>        at com.neusoft.unieap.action.EAPDispatchAction.execute(EAPDispatchAction.java(Compiled Code))
>        at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java(Inlined Compiled Code))
>        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java(Compiled Code))
>        at com.neusoft.unieap.action.EAPActionServlet.process(EAPActionServlet.java(Compiled Code))
>        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java(Compiled Code))
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
>        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java(Inlined Compiled Code))
>        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Compiled Code))
>        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Inlined Compiled Code))
>        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java(Compiled Code))
>        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java(Compiled Code))
>        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java(Inlined Compiled Code))
>        at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java(Compiled Code))
>        at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java(Compiled Code))
>        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java(Compiled Code))
>        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java(Compiled Code))
>--------------- nested within: ------------------
>weblogic.utils.NestedRuntimeException: Cannot parse POST parameters of request: '/his/DrugChargeAction.do' - with nested
exception:
>[java.net.SocketTimeoutException: Read timed out]
>        at weblogic.servlet.internal.ServletRequestImpl.mergePostParams(ServletRequestImpl.java(Compiled Code))
>        at weblogic.servlet.internal.ServletRequestImpl.parseQueryParams(ServletRequestImpl.java(Inlined Compiled Code))
>        at weblogic.servlet.internal.ServletRequestImpl.getParameter(ServletRequestImpl.java(Inlined Compiled Code))
>        at weblogic.servlet.internal.ServletRequestImpl.getParameter(ServletRequestImpl.java(Compiled Code))
>        at com.neusoft.unieap.util.RequestUtil. <init >(RequestUtil.java(Inlined Compiled Code))
>        at com.neusoft.unieap.action.EAPDispatchAction.execute(EAPDispatchAction.java(Compiled Code))
>        at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java(Inlined Compiled Code))
>        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java(Compiled Code))
>        at com.neusoft.unieap.action.EAPActionServlet.process(EAPActionServlet.java(Compiled Code))
>        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java(Compiled Code))
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
>        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java(Inlined Compiled Code))
>        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Compiled Code))
>        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Inlined Compiled Code))
>        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java(Compiled Code))
>        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java(Compiled Code))
>        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java(Inlined Compiled Code))
>        at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java(Compiled Code))
>        at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java(Compiled Code))
>        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java(Compiled Code))
>        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java(Compiled Code))

分享到:
评论
1 楼 fjjiaboming 2011-12-29  
Socket在读取Post过来的参数时“后继无人”

怎么看不懂这话... ?

相关推荐

    java.net.SocketTimeoutException: Receive timed out

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

    java.net包socket通信

    而`java.net.ServerSocket`类则用于服务端,它监听特定端口的连接请求,一旦有客户端请求连接,就会创建一个Socket实例来处理这个连接。 客户端的通信流程大致如下: 1. 创建Socket实例,指定服务器的IP地址和端口...

    Android socket 仿QQ客户端及服务端源码

    在Android中,我们可以使用`java.net.Socket`类来创建和管理socket连接。通过`Socket.connect()`方法与服务器建立连接,然后使用`Socket.getOutputStream()`和`Socket.getInputStream()`获取输入输出流,进行数据的...

    Java Socket常见异常处理

    解决方法是检查并更改端口号,选择一个未被使用的端口。使用`netstat -an`命令可以帮助识别哪些端口正在被监听。 2. **java.net.ConnectException: Connection refused: connect** 这个异常通常表示客户端无法连接...

    例10.05 Socket客户端程序.rar_java socket _socket_socket 客户端_socket

    在Java中,`java.net.Socket`类和`java.net.ServerSocket`类是实现客户端和服务器通信的核心。 标题中的"例10.05 Socket客户端程序"很可能是一个示例项目,旨在展示如何创建一个基本的Java Socket客户端。这个...

    java 检测本机的服务端口

    在Java中,我们可以利用`java.net.Socket`类或`java.net.ServerSocket`类来检测端口的状态。以下两种方法分别介绍: 1. 使用`java.net.Socket`尝试连接: 这种方法是通过尝试建立一个到指定端口的TCP连接来检测...

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

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

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

    同时,这也是一个很好的实践机会,可以帮助学生掌握如何在实际项目中应用这些技术,提升其编程和问题解决能力。此外,对于Java软件/插件的开发,这样的知识也能为开发网络相关的工具或服务提供基础。

    Java socket网络编程的基础示例

    在Java中,我们可以使用`java.net.Socket`类和`java.net.ServerSocket`类来实现TCP Socket编程。`ServerSocket`用于监听客户端的连接请求,`Socket`则代表一个客户端连接。以下是一个简单的TCP服务器端和客户端示例...

    socket编程

    import java.net.Socket; public class TCPClient { public static void main(String[] args) { try { // 创建Socket对象,指定服务器地址和端口 Socket socket = new Socket("127.0.0.1", 1234); // 获取...

    java 的socket编程

    在Java中,`java.net.Socket`类和`java.net.ServerSocket`类用于实现TCP通信。客户端首先创建一个Socket实例,通过指定服务器的IP地址和端口号建立连接。一旦连接建立,双方就可以通过输入输出流进行双向数据传输。...

    java socket连接池 实现

    在Java中,`java.net.Socket`类和`java.net.ServerSocket`类提供了Socket编程的基础API。`ServerSocket`用于监听客户端的连接请求,而`Socket`则用于建立客户端和服务器端的连接,进行数据传输。 然而,当并发请求...

    socket通讯 .net做为服务器端和java 做为客户端

    在Java端,我们使用`java.net.Socket`和`ServerSocket`类来实现客户端和服务器端的Socket通信。客户端创建Socket实例,指定服务器的IP和端口,然后通过Socket的`getOutputStream()`和`getInputStream()`方法获取数据...

    java 扫描TCP端口

    在Java中,我们可以使用`java.net.Socket`类来尝试建立一个到指定主机和端口的连接,从而扫描端口是否可用。如果连接成功,那么端口就是开放的;如果抛出异常,如`java.net.ConnectException`,则端口可能被占用或不...

    TCP.rar_java_tcp

    在Java中,我们可以使用`java.net.Socket`和`java.net.ServerSocket`类来实现TCP通信。 1. **TCP服务器端(Server)实现**: 服务器首先创建一个`ServerSocket`对象,指定监听的端口号。`ServerSocket`会等待...

    java基础网络编程

    Java中的`java.net.Socket`和`java.net.DatagramSocket`分别用于TCP和UDP的编程。 此外,Java还提供了对FTP(文件传输协议)和SMTP(简单邮件传输协议)的支持,允许开发者编写上传、下载文件或发送邮件的程序。`...

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

    总结来说,Java Socket长连接中解决`read()`阻塞问题可以通过约定数据长度、设置超时时间或关闭连接等方式实现。具体选择哪种方法,需要根据实际应用的需求和限制来权衡。在某些情况下,可能需要结合多种策略,以...

    JAVA+Socket教程

    Java Socket教程是一个深入学习Java网络编程的重要资源,它涵盖了如何使用Java的Socket API进行客户端-服务器通信的关键概念和技术。在本文中,我们将详尽探讨Java Socket编程的基础、工作原理以及如何实现基本的...

    Java网络编程学习资料

    `java.net.Socket`和`java.net.ServerSocket`类是主要的接口,用于建立客户端和服务器端的连接。Socket用于客户端,用于创建到服务器的连接并发送数据;ServerSocket则在服务器端监听客户端的连接请求。掌握套接字...

    java socket 中文教程

    Java Socket类(java.net.Socket)代表客户端的连接,ServerSocket类(java.net.ServerSocket)则用于服务器端监听和接受连接请求。它们是Java网络编程的基础,为开发者提供了创建可靠的、双向通信通道的方法。 二...

Global site tag (gtag.js) - Google Analytics