2012-02-27 33 views
2

我非常喜欢Tomcat新手,所以我猜测这个答案非常简单,但Google今天对我不友好。为多个同时发出的SOAP请求配置Tomcat

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

在其默认配置中,Tomcat似乎对请求进行排队。我的实验包括将客户端安装在两台指向同一台服务器的独立机器上,并在同一时间运行搜索(其中一台机器在另一台机器后0.11秒,但您可以看到图片)。

如何配置并发请求线程的数量? 我的理想配置是有X个请求线程,每个线程在Y分钟或Z请求之后(以较早者为准)循环自己(即调用析构函数和构造函数并循环其内存分配)。我被告知可以配置IIS来做到这一点(尽管我也没有使用IIS的经验),但是你如何使用Tomcat来做到这一点?

我希望能够回收线程,因为Tomcat在请求进入时并不会释放内存,这意味着当我们正在接近时偶尔出现(但不一致)Java堆空间错误内存限制(我已经在2GB服务器上配置为1GB)。我不是100%确定这是由于我的应用程序中是否存在内存泄漏,或者仅仅是因为我使用的工具使用了大量内存。

任何意见将不胜感激。

感谢, 里克

+2

太奇怪了...... SOAP请求最后是HTTP请求,Tomcat(任何Web容器)都能够支持并发请求(无需排队)。什么是您的SOAP引擎(Axis,JAX-WS)? – 2012-02-27 16:44:31

+1

我相信JAX-WS。总是有可能我错了,而不是排队,但即使是这样,我仍然希望能够配置它/可以看到配置是什么。 – RikSaunderson 2012-02-27 16:56:20

+0

默认情况下,Tomcat并发请求(如果没有它,这将会是无用的!)。请发布您正在使用的WS框架来实现您的服务。 – Perception 2012-02-27 16:57:57

回答

1

Tomcat中,默认情况下,可处理多达150个并发的HTTP请求 - 这是完全可配置的,显然这取决于您的服务器规格和应用而变化。但是,如果您的应用程序必须处理连接的“突发”,我建议您查看Tomcat的最小和最大“备用”线程。这些线程正在积极等待连接。如果没有足够的等待线程,Tomcat必须分配更多(这会产生轻微的开销),因此您可能会看到延迟。

而且,看看我的回答了这个问题涵盖了如何配置连接器:

Tomcat HTTP Connector Threads

另外,看看基本的JVM调整 - 特别是关系到堆分配开销和GC暂停时间。