HTTP 线程池和 JNDI 数据源连接池

HTTP Thread Pooling and JNDI Datasource Connection pools

我正在寻找一些关于如何配置线程池的最佳实践和建议 jboss/wildfly 与 JNDI 数据源的连接池大小相比,用于处理 http 请求。

虽然服务器上还有其他 Web 应用程序 运行,但一个新的 Web 服务应用程序使用 Spring 安全性进行身份验证,它通过检索到的 JDBC 数据源的 JNDI 调用我的数据库。如果在身份验证时抛出异常,Spring 安全会将其解释为身份验证失败并且 return 返回 401,这是有道理的。

我们已将节流实现为自定义 Spring 安全过滤器,它对每个用户、每个端点都起作用,并且需要在应用之前进行身份验证查找。

当用 jmeter 锤击服务以测试节流时,我开始看到返回 401 响应,因为没有更多 JDBC 可用连接。基本上 jboss/wildfly 有足够的 HTTP 线程来处理请求,但没有足够的 JDBC 连接来匹配。

我不愿意增加数据源连接池以匹配 HTTP 线程池,因为这看起来很愚蠢。我想知道关于这个问题是否有任何最佳实践。目前,我正在考虑在 Spring 安全异常处理中添加一些额外的东西来检查抛出的异常,如果没有 JDBC 连接,则 return 503。

理想情况下,您的 http 线程将等待数据库连接池到 return 一个连接对象,因此检查等待时间可能非常小。