【问题标题】:Web-Service on Tomcat with TimeoutTomcat 上的 Web 服务超时
【发布时间】:2010-12-17 15:52:45
【问题描述】:

我有一个运行大约 30 分钟的应用程序。带有一些输入数据。它还有测试数据,所以应用程序大约需要 30 秒。

应用程序应该在网络服务中可用。我用过CXF和tomcat。测试数据一切正常。对于真实数据,大约 1 分钟后会出现超时:SocketTimeoutException

我查看了所有超时参数(server.xml,所有 web.xml),但没有帮助。

我的应用程序非常消耗内存。我将此 vm 值添加到服务器 -Xmx1600m。没有,我得到一个 OutOfMemoryException

知道我还能尝试什么吗?我可以在级别会话中设置内存吗? 谢谢!

【问题讨论】:

  • 我建议将这个分成两个问题来解决你的两个问题
  • 您应该认真考虑分析您的应用程序是否存在内存泄漏。

标签: java web-services tomcat timeout


【解决方案1】:

免责声明:我从未与 CXF 合作过

此博客here 描述的情况与您的超时非常相似。

给出的示例代码表明使用HTTPConduitHTTPCLientPolicy 可以解决问题。

MyWebService service = new MyWebService();
MyWebServicePortType client = service.MyWebServicePort();

Client cl = ClientProxy.getClient(client);

HTTPConduit http = (HTTPConduit) cl.getConduit();

HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(0);
httpClientPolicy.setReceiveTimeout(0);

http.setClient(httpClientPolicy);

client.doSomething(...);

【讨论】:

  • 这正是问题所在。非常感谢!
【解决方案2】:

您的问题是内存不足,您可以尝试将参数-Xmx1600m 更改为-Xmx2048m 或更多。它进入文件/etc/init.d/tomcat

### BEGIN INIT INFO
# Provides: tomcat8
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Description: Tomcat 8
# Short-Description: start and stop tomcat
### END INIT INFO

## Source function library.
#. /etc/rc.d/init.d/functions
#export JAVA_HOME=/usr/java/default
export JAVA_HOME=/opt/jdk1.8.0_201
export JAVA_OPTS="-Dfile.encoding=UTF-8 \
  -Dnet.sf.ehcache.skipUpdateCheck=true \
  -XX:+UseConcMarkSweepGC \
  -XX:+CMSClassUnloadingEnabled \
  -XX:+UseParNewGC \
  -XX:MaxPermSize=256m \
  -Xms512m -Xmx2048m"
export PATH=$JAVA_HOME/bin:$PATH
TOMCAT_HOME=/opt/tomcat-latest
TOMCAT_USER=root
SHUTDOWN_WAIT=20

【讨论】:

    猜你喜欢
    • 2011-06-06
    • 2011-04-24
    • 2017-10-31
    • 2014-02-25
    • 2015-03-20
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多