从Route创建时,流量限制不起作用

时间:2018-11-11 18:52:18

标签: akka akka-stream akka-http

考虑包含所有HTTP服务的路由

val routes:Route = ...

我希望限制请求数,因此我使用Route.handleFlow(routes)创建流,并在有限的持续时间内调用了节流方法。

最后,我使用创建了HTTP绑定

Http().bindAndHandle(flowObjectAfterThrottling, hostname, port)

akka不会从循环中触发HTTP请求。

1 个答案:

答案 0 :(得分:1)

一种可能性是被“从循环中触发”的http请求可能正在使用单独的连接。每个进入的连接都以适当的速率进行节流,但是总吞吐量却高于预期。

改为使用配置

您无需编写软件即可为Route设置限制费率。

如果仅关注磁盘或RAM等资源的消耗,则可以删除费率逻辑并改用akka configuration settings

# The maximum number of concurrently accepted connections when using the
# `Http().bindAndHandle` methods.
max-connections = 1024

# The maximum number of requests that are accepted (and dispatched to
# the application) on one single connection before the first request
# has to be completed.
pipelining-limit = 16

这不提供设置最大频率的功能,但是它至少允许指定最大并发使用量,这通常足以保护资源。