java - 为多个并发 SOAP 请求配置 Tomcat

标签 java tomcat soap

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

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

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

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

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

如有任何建议,我们将不胜感激。

谢谢, 瑞克

最佳答案

默认情况下,Tomcat 最多可以处理 150 个并发 HTTP 请求 - 这是完全可配置的,并且显然会根据您的服务器规范和应用程序而有所不同。

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

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

Tomcat HTTP Connector Threads

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

关于java - 为多个并发 SOAP 请求配置 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9468527/

相关文章:

java - 在 Tomcat 中支持没有 Cookie 的 session

java - https 网络服务调用中的 SocketException

php - 如何在 php 中使用 soap 调用 Web 服务

java - org.apache.axis.message.SOAPBodyElement 无法转换为 weblogic.xml.xmlnode.XMLNode

java - Hibernate中字符串类型的外键

java - 在android中解析文本文件需要2个键作为输入

spring - 为 CAS 客户端使用 Spring Security 时出现 401 错误

java : use of executeQuery(string) method not supported error?

java - 使用 Gradle 时如何忽略 Jacoco 中的内部静态类

android - 在 Android 中,如何获取套接字以连接到指定的 servlet?