确定Web服务器上是否有HTTP资源可用

时间:2015-07-20 07:41:18

标签: java multithreading servlets glassfish-3 grizzly

我使用Glassfish v3来提供大型文件(glassfish也用于商业逻辑 - 仅供参考)我知道Glassfish与Grizzily网络服务器相关。我在同步模式下使用Grizzily。意思是,如果有100个线程,则只允许100次下载。其余的请求将排队。但是,我想为HTTP客户端设置503,由于缺少工作线程(最多100个)而无法提供服务。

问题

  1. 当没有工作线程可用时,甚至允许请求排队
  2. 我如何知道工作线程何时耗尽?手动计数器?
  3. 我应该在代码(filter,servlet?)中设置错误代码以及重试头数据吗?

2 个答案:

答案 0 :(得分:1)

通常这些是特定于容器的功能。您可以使用属性server.http-service.connection-pool.max-pending-count = 100配置请求队列大小。超过100的所有请求都将被拒绝。

有关详细信息,请参阅此处:

Glassfish tuning keepalive requests

答案 1 :(得分:0)

Servlet 3.0规范引入了对异步请求处理的支持,您可以利用它。 您可以引入基于应用程序的线程池并在那里处理持久性任务,这样您就可以完全控制线程池大小,并在线程池达到某个限制后采取适当的操作。