我正在开发一个用Spring Boot编写的简单微服务。此服务将充当另一个具有硬并发连接限制的资源的代理,并且请求需要一段时间才能处理。
我想对允许使用我的微服务的并发连接施加硬限制,并拒绝使用503或tcp / ip级别的任何连接。我试图研究可以为Jetty / Tomcat / Undertow制作的不同配置,但还没有找到完全令人信服的东西。
我发现了一些调节线程池的设置:
但如果理解正确,这些都是配置线程池大小,只会导致连接在某个级别排队。
这看起来非常有趣,但尚未合并,目标是Spring Boot 1.5,https://github.com/spring-projects/spring-boot/pull/6571
我现在使用设置运气不好吗?我当然可以实现一个过滤器,但宁愿在较早的水平上阻止它而不必重新发明轮子。我想在前面使用apache或其他东西也是一种选择,但仍然感觉有点矫枉过正。
答案 0 :(得分:1)
尝试查看EmbeddedServletContainerCustomizer
this gist可以给你并想出如何做到这一点。
TomcatEmbeddedServletContainerFactory factory = ...;
factory.addConnectorCustomizers(connector ->
((AbstractProtocol) connector.getProtocolHandler()).setMaxConnections(10000));