使用play框架的Java线程是正确的

使用play框架的Java线程是正确的,java,multithreading,playframework,playframework-2.0,Java,Multithreading,Playframework,Playframework 2.0,我使用play框架作为api,因此基本上所有的请求都会阻止jdbc调用。如果我们假设我拥有所有的硬件和其他一切,并且每个阻塞请求需要250毫秒,那么一个线程每秒可以处理4个阻塞请求,考虑到这个设置,我使用的是play 2.4.3的新版本。谢谢你的阅读 play { akka { akka.loggers = ["akka.event.slf4j.Slf4jLogger"] loglevel = WARNING actor {

我使用play框架作为api,因此基本上所有的请求都会阻止jdbc调用。如果我们假设我拥有所有的硬件和其他一切,并且每个阻塞请求需要250毫秒,那么一个线程每秒可以处理4个阻塞请求,考虑到这个设置,我使用的是play 2.4.3的新版本。谢谢你的阅读

play { 
    akka { 
        akka.loggers = ["akka.event.slf4j.Slf4jLogger"] 
        loglevel = WARNING 
        actor { 
            default-dispatcher = { 
                fork-join-executor { 
                    parallelism-min = 300 
                    parallelism-max = 300 
                } 
            }
        } 
    }
 }
我们最多可以有300个线程,因此每秒300*4=1200个线程,对吗

如果是这样的话,平行度因子会改变什么吗

如果我的想法是正确的,那么提高每秒线程数的唯一方法就是减少请求阻塞时间和/或增加线程数量,如果是这样,那么我可以安全地将并行性最大计数增加到多少

这意味着将最小值和最大值定义为300将覆盖通过并行度因子设置的任何值,因为唯一有效的值正好变为300

是的,300个并发连接限制在每秒4个请求,每个连接导致每秒总共1200个请求。但这并不是一种寻找值的现实方法,因为数据库性能随负载而变化。您必须测试更多并发连接是否会带来总体收益

如果我的想法是正确的,那么提高每秒线程数的唯一方法就是减少请求阻塞时间和/或增加线程数量

如果是这样,您可以安全地将游戏中的并行最大计数增加到多少


这取决于你的硬件。它是无限的,如果你的硬件也是无限的。实际上,如果db不在本地主机上,请查看cpu负载/内存消耗/网络带宽/通用io限制(如果),并尽可能将其限制。使用因子很可能比定义固定值更简单。

非常感谢,我将使用因子,因为它更简单。
    # 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.