【问题标题】:Limit the number of parallel processing of a servlet限制一个servlet的并行处理数量
【发布时间】:2009-10-28 04:20:49
【问题描述】:

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

是否可以创建自定义线程池,并将其配置为定义最大线程数并分配给该 servlet 以处理这种情况?我们使用的是 WebLogic 服务器 9.2。或者有没有其他更好的方法来做到这一点?欣赏任何想法。

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

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

【问题讨论】:

  • 您可能想解释一下这与昨天结束前的问题有何不同。
  • 不要犹豫,也为我的答案投票 :)

标签: weblogic


【解决方案1】:

是否可以为此 servlet 创建和分配自定义线程池来处理这种情况?我们使用的是 WebLogic 服务器 9.2。或者有没有其他更好的方法来做到这一点?欣赏任何想法。

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


1 请注意,enable WebLogic 8.1 线程池模型和使用执行队列仍然是可能的。

【讨论】:

  • 感谢以上描述和确认。
猜你喜欢
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-29
  • 2013-11-01
  • 2018-12-18
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多