限制servlet的并行处理数

时间:2009-10-28 04:20:50

标签: weblogic

我们有一个servlet,它在下载文件时占用服务器上更多的虚拟内存。出于这个原因,我们想限制对此服务器的并发请求,例如我们只想要并行处理10个请求。我们希望其他请求在队列中等待。

是否可以创建自定义线程池,并将其配置为定义最大线程数并为此servlet分配以处理此方案?我们正在使用WebLogic Server 9.2。或者还有其他更好的方法吗?感谢任何想法。

我们是否可以配置一个单独的servlet并将线程池配置为仅允许X个并发请求,所有其他请求将被放入队列以使用下一个可用的servlet。这种方法是否会引发超时错误?你能否分享一下这方面的更多细节?谢谢

http://download.oracle.com/docs/cd/E13222%5F01/wls/docs92/perform/appb%5Fqueues.html

1 个答案:

答案 0 :(得分:3)

  

是否可以创建自定义线程池并为此servlet分配以处理此方案?我们正在使用WebLogic Server 9.2。或者还有其他更好的方法吗?感谢任何想法。

是的,这是可能的。而不是使用default self-tuning work manager(从Weblogic 9.x开始,执行队列被线程池 1 的工作管理器替换),您可以创建具有特定constraints的工作管理器比如max-threads-constraint,可能还有capacity。然后,您可以使用weblogic.xml部署描述符文件的wl-dispatch-policy将Servlet分配给特定的工作管理器。


1 请注意,仍然可以使用enable WebLogic 8.1线程池模型并使用执行队列。