相关疑难解决方法(0)

Slick对numThreads和最佳实践感到困惑,以获得良好的性能

我正在使用PlayFrameWork与Slick并在一个所有I/O数据库都很重的系统中使用它.在我的application.conf文件中我有这个设置:

play {
  akka {
    akka.loggers = ["akka.event.slf4j.Slf4jLogger"]
    loglevel = WARNING
    actor {
      default-dispatcher = {
        fork-join-executor {
          parallelism-factor = 20.0
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这显然给了我每个核心20个线程的播放应用程序,据我所知它Slick创建它自己NumThreads的线程,Slick中的字段意味着这是线程的总数还是它(NumThreads x CPU的)?是否有最佳性能的最佳实践?我目前将我的设置配置为:

database {
  dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
  properties = {
    databaseName = "dbname"
    user = "postgres"
    password = "password"
  }
  numThreads = 10
}
Run Code Online (Sandbox Code Playgroud)

scala playframework slick

15
推荐指数
1
解决办法
6268
查看次数

Slick 3.0-RC3因java.util.concurrent.RejectedExecutionException而失败

我正在尝试熟悉Slick 3.0和Futures(使用Scala 2.11.6).我使用基于Slick的Multi-DB Cake Pattern示例的简单代码.为什么以下代码以异常终止以及如何修复它?

import scala.concurrent.Await
import scala.concurrent.duration._
import slick.jdbc.JdbcBackend.Database
import scala.concurrent.ExecutionContext.Implicits.global

class Dispatcher(db: Database, dal: DAL) {
  import dal.driver.api._

  def init() = {
    db.run(dal.create)
    try db.run(dal.stuffTable += Stuff(23,"hi"))
    finally db.close

    val x = {
      try db.run(dal.stuffTable.filter(_.serial === 23).result)
      finally db.close
    }
    // This crashes:
    val result = Await.result(x, 2 seconds)
  }
}
Run Code Online (Sandbox Code Playgroud)

执行失败:

java.util.concurrent.RejectedExecutionException: Task slick.backend.DatabaseComponent$DatabaseDef$$anon$2@5c73f637 rejected from java.util.concurrent.ThreadPoolExecutor@4129c44c[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2]
    at …
Run Code Online (Sandbox Code Playgroud)

concurrency scala slick

2
推荐指数
1
解决办法
2655
查看次数

标签 统计

scala ×2

slick ×2

concurrency ×1

playframework ×1