我正在使用Tomcat,并且将http:inbound-gateway
作为网关,并将名为request
的通道配置为其请求通道。有时,我的服务上有很多请求,这些请求导致发生Too many open files
来自操作系统的错误。
我试图将request
频道设为QueChannel
并为其设置容量,但是它不起作用。然后,我尝试将request
通道设置为轮询用户通道,并设置一个具有固定延迟的轮询器以进行轮询,但是该通道不再起作用。有限制输入请求数量的常规方法吗?
以及如何自定义已丢弃请求中的响应?
<int:channel id="request">
<int:queue capacity="100"/>
</int:channel>
...
<int-http:inbound-gateway id="RESTServiceGateway"
supported-methods="GET"
request-channel="request"
error-channel="errorResolver" />
<int:chain input-channel="request" output-channel="response">
<int:poller fixed-delay="1" max-messages-per-poll=""/>
...
或
<task:executor id="requestExecutor" pool-size="1-10" queue-capacity="10"/>
<int:channel id="request">
<int:dispatcher task-executor="requestExecutor"/>
</int:channel>
<int-http:inbound-gateway id="RESTServiceGateway"
supported-methods="GET"
request-channel="request"
error-channel="errorResolver" />
<int:chain input-channel="request" output-channel="response">
...
答案 0 :(得分:1)
Message: Failed to find data source: com.databricks.spark.xml.
Please find packages at http://spark.apache.org/third-party-projects.html
...
与您的集成流配置无关。这是关于从HTTP客户端到Tomcat的打开的套接字。这个已经是并发的,可以并行处理许多请求。因此,我要说的是,流中的并行逻辑不会带来太多价值,并且绝对不会影响许多打开的套接字。
您可以通过maxConnections
in server.xml
在Tomcat中配置并发性。
另一个选择是使用Too many open files
工具https://www.tecmint.com/increase-set-open-file-limits-in-linux/