我们有一台从去年开始在生产中运行的web服务器,没有任何问题,但最近用户数量激增,从那时起,我们看到工作时间严重缓慢,我们有时也看到服务器没有响应,所以这对我们来说是一个严重的问题。
我们观察到数据库侧的最大利用率是在最大的8个活动连接,而不是更多。因此,我们将问题缩小到“Play framework或akka服务器只允许有限的线程池来管理所有负载,从而造成瓶颈”。
作为play框架和akka http服务器的新成员,我们已经尝试了以下各种组合,但在运行时仍然没有看到线程池的增加。它总是8。注意:这‘8’是一致的pc与8个逻辑核和我们的生产服务器,有6个核心。
供参考的线程名称示例:
应用程序-akka.actor.default-Dispatcher-3
下面的示例配置:
#akka.action.default-dispatcher.executor = "fork-join-executor" akka.action.default-dispatcher.executor = "thread-pool-executor"
#akka.action.default-dispatcher.throughput = 100 akka.action.default-dispatcher.thread-pool-executor.fixed-pool-size = 300
#akka.action.default-dispatcher.thread-pool-executor.core-pool-size-min = 2
#akka.action.default-dispatcher.thread-pool-executor.core-pool-size-factor = 2.0
#akka.action.default-dispatcher.thread-pool-executor.core-pool-size-max = 10
#akka.action.default-dispatcher.fork-join-executor.parallelism-max = 24
akka.http.host-connection-pool.max-connections = 20发布于 2021-07-07 17:24:41
您的问题非常广泛,很难给出明确的答案,但是除了可能需要增加阻塞调用的Akka线程池执行器大小之外,还有数据库池的配置:
play.db.prototype.hikaricp.maximumPoolSize = 20我建议阅读正式文件的两个部分:
https://stackoverflow.com/questions/68286663
复制相似问题