【发布时间】:2017-10-01 01:55:35
【问题描述】:
我为仅使用 akka http 客户端(通过主机连接池)的服务配置了 fork join 调度程序:
my-dispatcher {
type = Dispatcher
executor = "fork-join-executor"
fork-join-executor {
parallelism-min = 256
parallelism-factor = 128.0
parallelism-max = 2048
}
}
服务逻辑唯一要做的就是从外部源请求,使用jawn解组,然后将jawn ast转换为案例类:
def get(uri: Uri)[T]: Future[T] = {
for {
response <- request(uri)
json <- Unmarshal(response.entity).to[Try[JValue]]
} yield json.transformTo[T]
}
我想知道对于这种工作负载使用固定线程池是否更有效。该服务获得大约 150 个请求/秒,我希望将 CPU 使用率保持在 1 个 CPU 以下(目前徘徊在 1.25-1.5 个 CPU 左右)。
【问题讨论】:
-
您对 fork-join-executor 参数的选择无论如何都显得过分了。查看docs 了解更多指南。
标签: scala akka akka-http forkjoinpool