Tomcat 上的 Web 服务超时

发布于 2024-10-08 07:05:16 字数 321 浏览 0 评论 0原文

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

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

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

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

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

I have an application witch runs about 30 min. with some input data. It has also test data, so the application takes about 30 sec.

The application should be available in a webservice. I used CXF and tomcat. All works fine with the testdata. With real data there is a timeout after about 1 min: a SocketTimeoutException

I had a look at all timeout parameters (server.xml, all web.xml) but doesn't help.

My application is very memory consuming. I added this vm value to the server -Xmx1600m. Without, I get a OutOfMemoryException

Any idea what I could still try? Can I set the memory on level session?
Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只为守护你 2024-10-15 07:05:16

免责声明:我从未使用过 CXF

此博客此处< /a> 似乎描述了与超时非常相似的情况。

给出的示例代码表明使用 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(...);

Disclaimer: I've never worked with CXF

This blog here seens to be describing a very similar situation to your timeout.

The sample code given their indicates the use of an HTTPConduit with an HTTPCLientPolicy can solve the issue.

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(...);
伏妖词 2024-10-15 07:05:16

您的问题是内存不足,您可以尝试将参数-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

You problem is outOfMemory, Can you try to change the parameter -Xmx1600m for -Xmx2048m or more. It into file /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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文