确定 HTTP 资源在网络服务器上是否可用
Determine if HTTP resources are available on the webserver
我使用 Glassfish v3 来处理大文件(glassfish 也用于业务逻辑 - 仅供参考)我知道 Glassfish 前端使用 Grizzily web-server。我在同步模式下使用 Grizzily。也就是说,如果有 100 个线程,则只允许进行 100 次下载。其余请求将排队。但是,我想为由于缺少工作线程(最多 100 个)而无法提供服务的 HTTP 客户端设置 503。
问题
- 当没有工作线程可用时,是否应该甚至允许请求排队
- 我如何知道工作线程何时耗尽?手动计数器?
- 我应该在代码的哪个位置(过滤器、servlet?)设置错误代码以及重试 header 数据?
Servlet 3.0 规范引入了对异步请求处理的支持,您可以利用它。
您可以引入一个基于应用程序的线程池并在那里处理长期任务,这样您就可以完全控制线程池的大小并在线程池达到某个限制时采取适当的措施。
通常这些是容器特定的功能。您可以使用 属性 server.http-service.connection-pool.max-pending-count = 100
配置请求队列大小。所有超过 100 的请求都将被拒绝。
有关详细信息,请参阅此处:
我使用 Glassfish v3 来处理大文件(glassfish 也用于业务逻辑 - 仅供参考)我知道 Glassfish 前端使用 Grizzily web-server。我在同步模式下使用 Grizzily。也就是说,如果有 100 个线程,则只允许进行 100 次下载。其余请求将排队。但是,我想为由于缺少工作线程(最多 100 个)而无法提供服务的 HTTP 客户端设置 503。
问题
- 当没有工作线程可用时,是否应该甚至允许请求排队
- 我如何知道工作线程何时耗尽?手动计数器?
- 我应该在代码的哪个位置(过滤器、servlet?)设置错误代码以及重试 header 数据?
Servlet 3.0 规范引入了对异步请求处理的支持,您可以利用它。 您可以引入一个基于应用程序的线程池并在那里处理长期任务,这样您就可以完全控制线程池的大小并在线程池达到某个限制时采取适当的措施。
通常这些是容器特定的功能。您可以使用 属性 server.http-service.connection-pool.max-pending-count = 100
配置请求队列大小。所有超过 100 的请求都将被拒绝。
有关详细信息,请参阅此处: