如果达到最大线程数,则自定义Resin 4.0.32的行为

时间:2013-05-22 22:48:21

标签: java threadpool resin

首先,我不太确定如果Resin Standalone服务器4.0.32达到最大线程数,会发生什么。根据我的观察,Resin会将请求置于保持状态(按顺序处理它们)或断开连接。但我不知道Resin如何决定这一点。 所以我想知道它背后发生了什么。

此外,我想知道在这种情况下是否可以自定义服务器的行为,因此假设树脂已达到允许的最大线程数。对于队列中的请求,如果它们在队列中的时间超过2分钟,我希望服务器向客户端返回503。这可以实现吗?

感谢任何评论或信息。谢谢。

我们正在使用Resin 4.0.32开源版,java 1.6_16

1 个答案:

答案 0 :(得分:0)

我在Caucho官方论坛上被ferg证实了这一行为:

  

通常你不应该遇到thread-max,因为thread-max   设置的数字远远高于应用程序通常应达到的数字。

     

如果确实如此,则挂起的线程execute()排队。最终其中一个线程将完成并获取请求的execute()。

     

(除非你故意将thread-max设置为非常低的值,这可能意味着所有线程都在做有用的事情。但是没有充分的理由这样做。线程相对便宜。)

     

http://forum.caucho.com/showthread.php?t=29823

所以这证实了我的观察,即在达到允许的最大线程后,另一个请求将排队等待处理。而且,如果服务器可以处理的内容远远超过服务器,则会拒绝某些请求。

关于我的第二个问题,如果我们可以自定义返回503关于请求,我做了更多的研究,我得出结论,它不能用树脂独立完成,因为我找不到任何关于它的信息。我唯一能找到的是,当Web服务器无法连接到树脂应用服务器时,Apache Web服务器将在使用树脂应用程序服务器时返回503。

希望这会有所帮助。