【问题标题】:Configure Tomcat for multiple simultaneous SOAP requests为多个同时 SOAP 请求配置 Tomcat
【发布时间】:2012-03-17 03:11:36
【问题描述】:

我是一个 Tomcat 新手,所以我猜这个问题的答案很简单,但 Google 今天对我并不友好。

我有一个安装在 Apache Tomcat 上的 Java Web 应用程序。虽然应用程序有一个首页(用于诊断目的),但该应用程序实际上都是关于 SOAP 接口的。没有客户端需要查找服务器的网页。客户端向服务器发送 SOAP 请求,服务器解析请求,然后在数据库中查找结果。然后将结果再次通过 SOAP 传递回客户端。

在其默认配置中,Tomcat 似乎对请求进行排队。我的实验包括将客户端安装在指向同一台服务器的两台不同的机器上,并在完全相同的时间运行搜索(嗯,一台比另一台晚 0.11 秒,但你明白了)。

如何配置并发请求线程数? 我的理想配置是有 X 个请求线程,每个请求线程每 Y 分钟或在 Z 个请求之后(以较早者为准)回收自身(即调用析构函数和构造函数并回收其内存分配)。有人告诉我可以配置 IIS 来执行此操作(尽管我也没有 IIS 经验),但是您将如何使用 Tomcat 来执行此操作?

我希望能够回收线程,因为当请求进入时 Tomcat 似乎在抓取内存而不释放它,这意味着当我们接近内存限制(我已经在 2GB 服务器上配置为 1GB)。我不能 100% 确定这是由于我的应用程序中的内存泄漏,还是我使用的工具占用了大量内存。

任何建议将不胜感激。

谢谢, 里克

【问题讨论】:

  • 太奇怪了...... SOAP 请求最终是 HTTP 请求,而 Tomcat - 与任何 Web 容器一样 - 能够支持并发请求(无需排队)。你的 SOAP 引擎是什么(Axis、JAX-WS)?
  • 我相信 JAX-WS。总是有可能我错了并且它没有排队,但即使是这样,我仍然希望能够配置它/了解配置是什么。
  • Tomcat 默认执行并发请求(没有它会有点用处!)。请发布您用于实现服务的 WS 框架。
  • 您查看过您的数据库配置吗?也许数据源仅配置为接受单线程请求(在股票设置中很常见)?

标签: java tomcat soap


【解决方案1】:

默认情况下,Tomcat 最多可以处理 150 个并发 HTTP 请求 - 这是完全可配置的,显然取决于您的服务器规范和应用程序。

但是,如果您的应用必须处理“突发”连接,我建议您查看 Tomcat 的最小和最大“备用”线程。这些是积极等待连接的线程。如果没有足够的等待线程,Tomcat 必须分配更多(这会产生轻微的开销),因此您可能会看到延迟。

另外,看看我对这个问题的回答,其中包括如何配置连接器:

Tomcat HTTP Connector Threads

此外,请查看基本的 JVM 调优 - 尤其是与堆分配开销和 GC 暂停时间相关的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2018-01-19
    • 2018-03-31
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    相关资源
    最近更新 更多