Multithreading Play Framework在向服务器添加更多资源时会扩展线程池吗

Multithreading Play Framework在向服务器添加更多资源时会扩展线程池吗,multithreading,playframework,playframework-2.0,playframework-2.3,Multithreading,Playframework,Playframework 2.0,Playframework 2.3,我是新手,正在使用它进行同步数据库调用,并且有一些我不清楚或误解的地方;首先,我在application.conf中输入了以下代码 play { akka { akka.loggers = ["akka.event.slf4j.Slf4jLogger"] loglevel = WARNING actor { default-dispatcher = { fork-join-executor { parallelism-m

我是新手,正在使用它进行同步数据库调用,并且有一些我不清楚或误解的地方;首先,我在application.conf中输入了以下代码

play {
  akka {
    akka.loggers = ["akka.event.slf4j.Slf4jLogger"]
    loglevel = WARNING
    actor {
      default-dispatcher = {
        fork-join-executor {
          parallelism-min = 300
          parallelism-max = 300
        }
      }
    }
  }
}

这是我从中学到的,我也读过。这意味着您始终有300个线程可用于阻止数据库操作?或者每秒最多300个请求?另外,如果我有更多的服务器资源,比如更多的Ram、CPU或内核,这会增加可用线程的数量吗?例如,如果我买了一台有4个核心的服务器,等等。。可用线程会跳到1200吗?如前所述,我的所有行为都在阻止从用户注册到用户聊天,所以我现在试图在错误观念变得更昂贵之前消除它们。

我也对整个Akka和thread的东西感到好奇,所以我做了一些研究,这就是我想到的。我希望有帮助

Play用于线程管理和并发性。这样做的好处是,在应用程序编程过程中,不必再担心并发问题

Akka用于管理其参与者的处理器时间(参与者是Akka中实际计算发生的地方)

调度员是Akka.NET最重要的组成部分之一,因为他们控制每个参与者的吞吐量和时间共享,为每个参与者提供公平的资源共享

Akka允许不同的分派器,但是默认的分派器是“fork-join-executor”,这也是默认使用的一个Play

在配置中,您将最小和最大线程数设置为300。通过这种方式,您可以将线程数量固定为300,因为您希望线程池的大小相当大,因为您有许多同步数据库调用。您有300个线程,与处理器的数量无关。如果你买了一台处理器更多的新服务器,它仍然是300

否则,如果不设置最小线程数和最大线程数,调度程序将按照公式
可用处理器*并行系数
进行一些计算。当然,您也可以设置此并行度因子,以适应不同服务器的不同处理器数量。因此,如果将此并行度因子设置为75,则在具有4个处理器的服务器上最多会有300个线程,在具有8个处理器的服务器上最多会有600个线程

在Akka的源代码中,记录了:

并行度因子用于使用 以下公式:ceil(可用处理器*系数)。最终尺寸 然后由平行度最小值和平行度最大值限定

如果你想阅读更多关于Akka和调度员的信息,我建议你阅读那些有很好的来源列表的文档