我们在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)
答案 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