spa*_*rkr 6 threadpool playframework
Play 框架向我的应用程序公开的线程数量是否有限制?Play 应用程序内的线程大小真的那么珍贵吗?如果我在应用程序中使用自己创建的线程池而不使用 Play 提供的线程池,会怎么样?这是推荐的吗?谁能解释一下 Play 如何处理线程?
Play 应用程序中的线程限制基本上必须由分配给 VM 的最大内存决定。每个线程都会消耗相当多的内存,因为它们有自己的堆栈。本质上,可能的最大线程数取决于您将传递给 JVM 的参数以及计算机上的总 RAM 等。
您应该让 Play 为您管理线程。配置文档位于此处。Play 设计的一部分是尽量减少所需的线程数量,因此除非您正在进行大量阻塞调用,否则您不需要接触它。
Play 使用 Akka 来处理线程。内部参与者系统的配置可以在这里找到。其中最有趣的部分是parallelism-factor和parallelism-max。如果我们看一下评论良好的Akka参考配置:
# The parallelism factor is used to determine thread pool size using the
# following formula: ceil(available processors * factor). Resulting size
# is then bounded by the parallelism-min and parallelism-max values.
parallelism-factor = 3.0
# Max number of threads to cap factor-based parallelism number to
parallelism-max = 64
Run Code Online (Sandbox Code Playgroud)
根据参考配置, Playparallelism-factor默认设置为 1。这意味着默认情况下,Play 将拥有一个等于可用处理器数量的线程池,最多为 24 个。
| 归档时间: |
|
| 查看次数: |
5452 次 |
| 最近记录: |