Java Socket TimeOut Exceptions,会导致这些错误的原因

时间:2015-06-10 22:15:03

标签: java sockets

我们在IBM Websphere应用服务器上的负载增加时遇到套接字超时异常。我们试图查看超时是否是由应用程序服务器上的低速引起的。或者,超时是否仅基于对我们的SOAP Web服务的套接字数据传输活动引起的。基本上,会增加客户端机器上的负载导致套接字超时吗?或者,超时仅由服务器端的响应时间较慢引起。或两者?我的第一个想法是超时是由于服务器响应时间慢造成的。

这是一个示例错误。这是连接到Windows机器的Java Web应用程序(客户端),C#web-service。

WebServicesFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultString: java.net.SocketTimeoutException: Async operation timed out
faultActor: null
faultDetail: 

java.net.SocketTimeoutException: Async operation timed out
                at com.ibm.ws.webservices.engine.WebServicesFault.makeFault(WebServicesFault.java:283)
                at com.ibm.ws.webservices.engine.transport.http.HTTPSender.invoke(HTTPSender.java:725)
                at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:263)
                at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:263)
                at com.ibm.ws.webservices.engine.PivotHandlerWrapper.invoke(PivotHandlerWrapper.java:263)

2 个答案:

答案 0 :(得分:2)

IBM Async operation timed out的文档归咎于服务器:

  

WSWS3228E异常发生在WebService客户端(JAX-RPC)中   调用WebService调用和WebService提供程序需要多个   处理请求的默认超时(300秒)。

服务器花费超过5分钟(300秒)来响应请求。最可能的情况是服务器上的负载很重。另一个可能的罪魁祸首是对服务器(例如数据库或其他Web服务)的缓慢/无响应的支持服务。它有可能是客户端和服务器之间的链接。您需要从服务器中获取一些指标,以确定请求被捕获的位置。

我可以建议阅读Release It!。它列出了分布式系统出现问题的原因,并提出了修复它们的方法。

答案 1 :(得分:0)

调查异常" java.net.SocketTimeoutException之后的类似问题:异步操作超时"在IBM应用程序服务器上,我最终发现控制该超时的JVM参数是(对于JAXWS调用):

"timeout" (read) & "write_timeout" (write)

我并不是说你应该增加那些超时。您首先需要找出为什么突然您的通话需要超过5分钟才能回复。如果您有正当理由增加它们,可以通过这种方式将这些参数传递给Java程序:

java -classpath "/classpath/dir1/*:/classpath/dir2/" -Dtimeout=600 -Dwrite_timeout=600 ClassName arg1 arg2

IBM参考:https://www.ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/rwbs_httptransportprop.html#http_field15