Akka Http客户端池溢出

时间:2017-03-10 21:42:44

标签: akka akka-stream akka-http

我正在使用Akka的HTTP客户端,而且我正在溢出连接池。输入伪代码:

Source(myIterator).map(... make an HttpRequest)
    .via(Http().cachedHostConnectionPool[...](...))
    .runForeach { 
        case (Success(req), _) => 
            Await.ready(resp.discardEntityBytes().future(), 10 seconds)
    }

我尝试创建一个非默认的ActorMaterializer,它将所有缓冲区设置为1,我仍然溢出连接池。

我想在调整性能之前不要修改池大小。

在我的阅读中,我怀疑Http流不会发出任何背压 信号,因为它驻留在一个Actor,类似于Sink.actorRef(...)调用?

我想要的是(1)确认我没有错误地接近这一点,以及(2)亲爱的读者,将如何减轻这种影响?我有一个解决方案,使用Actor来使用singleRequest() API的Http()方法来管理飞行请求,但这似乎有点过分。

此问题的演示示例是in a github project I made。您必须将HTTP URI指向一个大文件,以使连接速度减慢到足以耗尽默认连接池。

谢谢!

0 个答案:

没有答案