0

首先,我不太确定如果 Resin Standalone server 4.0.32 达到最大线程数会发生什么。根据我的观察,Resin 要么暂停请求(按顺序处理它们)要么断开连接。但我不知道 Resin 是如何决定的。所以我想知道它背后发生了什么。

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

任何意见或信息表示赞赏。谢谢你。

我们使用的是 Resin 4.0.32 开源版,java 1.6_16

4

1 回答 1

0

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

通常你不应该达到线程最大值,因为线程最大值被设置为远高于你的应用程序通常应该达到的数字。

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

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

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

所以这证实了我的观察,在达到允许的最大线程数后,另一个请求将排队处理。而且,如果服务器无法处理的内容更多,则某些请求将被拒绝。

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

希望这可以帮助。

于 2013-05-24T15:52:46.410 回答