我有一些关于PlayFramework中线程名称的问题。我已经在游戏上开发了大约5个月的Rest-API服务。该应用程序只需访问MySQL,并将json格式的数据发送回客户端。我已经理解了“阻塞io”的缺陷,所以我创建了一个用于阻塞io的线程池,并在阻塞线程执行的所有Future块中使用它。线程池的定义如下。
akka {
actor-system = "myActorSystem"
blocking-io-dispatcher {
type = Dispatcher
executor = "thread-pool-executor"
thread-pool-executor {
fixed-pool-size = 64
}
throughput = 10
}
}
我检查了日志文件,并确保所有非阻塞逻辑都在名为'application-akka.actor.default-dispatcher-#‘的线程下运行,其中
是整数值,且所有阻塞逻辑都运行在名为
‘’application blocking io-dispatcher‘。然后,我使用'Jconsole‘检查了所有线程的名称和计数。名为application-akka.actor.default-dispatcher-#的线程数始终小于13,而‘application-blocking io-dispatcher-#’的线程数始终小于30。然而,我的应用程序在其下运行的JVM的线程总数不断增加。线程总数超过10000。
有太多线程的名称以'default-scheduler-‘或'default-akka.actor.default-dispatcher’开头。
我的问题是
a. 'application-akka.actor.default-dispatcher‘和'default-akka.actor.default-dispatcher-’有什么区别?
b.线程数量增加有什么原因吗?
我想解决这个问题。
这是我的环境。
操作系统: Windows 10专业版。64位
处理器:英特尔(R)酷睿i7 @3.5 CPU
RAM :64 RAM
JVM : 1.8.0_162 64位
PlayFramework : 2.6
关系数据库: MySQL 5.7.21
我们将非常感谢您提出的任何建议。提前谢谢。
发布于 2018-06-21 16:53:20
最后我解决了这个问题。有一个bug不会关闭akka的Materializor实例。修改代码后,VM中的线程数保持稳定。谢谢。
https://stackoverflow.com/questions/50640673
复制相似问题