gpt4 book ai didi

playframework-2.0 - 在 playframework 中,我如何将 io 线程优先于 akka Actor ?

转载 作者:行者123 更新时间:2023-12-03 13:31:57 25 4
gpt4 key购买 nike

我正在 play 2.0 框架上编写一个应用程序。这个应用程序的目的是处理图像上传并在后台调整它们的大小。

上传是通过标准的后处理程序处理的,该处理程序将文件保存到文件系统。现在这只是在事件或 IO 线程上完成的。成功保存文件后,AKKA Actor 会收到一条消息,将原始图像的大小调整为多种不同的大小(当前为 4)。这些调整大小操作对 CPU 要求很高,并且需要一些时间。

这一切都很好,直到我在一些负载下测试应用程序。在负载下,调整大小操作有效地消耗了所有可用的 CPU 时间,因此传入的 HTTP 请求在某种程度上缺乏 CPU 时间,我们看到这些请求积压到最终请求开始超时的程度。

所以问题是,我如何配置系统(或重写它)以赋予传入的 HTTP 请求比调整大小请求更高的优先级?

最佳答案

你应该调查dispatcher in Akka .基本上,它们抽象了每个参与者用于处理的线程/工作池。您可以定义一个全局调度程序或拥有多个全局调度程序。

定义只有有限数量的线程(1 或 2)的调度程序:

resizing-thread-pool-dispatcher {
type = Dispatcher
executor = "thread-pool-executor"
thread-pool-executor {
core-pool-size-max = 1
}
}

并将其与您调整大小的 Actor 相关联:
context.
actorOf(
Props[ResizingActor].withDispatcher("resizing-thread-pool-dispatcher"),
"resizingActor"
)

当然想法是你的 resizing-thread-pool-dispatcher使用较少的可用内核线程,因此您的 HTTP 线程仍然可以响应。

关于playframework-2.0 - 在 playframework 中,我如何将 io 线程优先于 akka Actor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14443090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com