multithreading - 线程数过多的问题
问题描述
我对 PlayFramework 中的线程名称有一些疑问。我在 Play 上开发了 Rest-API 服务大约 5 个月。该应用程序只需访问 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-#”的线程下运行,其中
是整数值,并且所有阻塞逻辑都在名为的线程下运行
“应用程序阻塞 io 调度程序”。然后我使用'Jconsole'检查了所有线程名称和计数。名为“application-akka.actor.default-dispatcher-#”的线程数始终小于 13,“application-blocking-io-dispatcher-#”的线程数始终小于 30。但是,总线程数我的应用程序在其下运行的 JVM 不断增加。线程总数超过10,000。
有很多线程的名称以“default-scheduler-”或“default-akka.actor.default-dispatcher”开头。
我的问题是
一个。'application-akka.actor.default-dispatcher' 和 'default-akka.actor.default-dispatcher-' 有什么区别?
湾。线程数增加有什么原因吗?
我想解决这个问题。
这是我的环境。
操作系统:Windows 10 专业版。64位
CPU : Intel(R) Core i7 @ 3.5GHz
内存:64GB
JVM:1.8.0_162 64位
播放框架:2.6
关系型数据库:MySQL 5.7.21
任何建议将不胜感激。提前致谢。
解决方案
Finally I solved the problem. There was a bug that would not shutdown the instance of akka's Materializor. After modifying the code, thread count in the VM keeps stable value. Thanks.
推荐阅读
- python - Django AUTH_LDAP_MIRROR_GROUPS 不工作
- javascript - Treant 可折叠节点文本方向
- css - 如何使 jsf commandLink 看起来被禁用?
- html - 对齐表格单元格内的溢出文本和图标
- json - 邮递员将多个xml值提取为json作为全局变量
- python - Python中的字典到JSON
- mysql - 如何使用 SQL 设置一个值并更改满足条件的所有其他值
- python - python Tkinter - 如何计算扩展标签中可以显示的字符数量?
- javascript - 使用jQuery在页眉和页脚之间滚动时如何使侧边栏保持粘性(不滚动它们)?
- java - SSLException:不支持的记录版本未知