HiC*_*123 10 java executorservice akka forkjoinpool
我在这里查看文档:http://doc.akka.io/docs/akka/2.3.3/java/dispatchers.html
我们以这样的方式使用Akka,我们为不同的actor提供了两个独立的调度程序(默认的fork-join执行程序).我们现在遇到一些性能问题,我们正在研究如何调整调度程序配置参数并查看它们如何影响应用程序的性能.
我查看了文档,但并不真正了解配置参数.例如,仅针对简单的默认值,fork-join-executor调度程序:
这些是什么以及如何配置它们以了解它们如何影响应用程序性能?
# Min number of threads to cap factor-based parallelism number to
parallelism-min = 2
# Parallelism (threads) ... ceil(available processors * factor)
parallelism-factor = 2.0
# Max number of threads to cap factor-based parallelism number to
parallelism-max = 10
Run Code Online (Sandbox Code Playgroud)
谢谢!
Arn*_*lay 18
当然,此配置取决于您的硬件.
假设您的计算机上有2个可用处理器,那么您可以通过并行因子配置给定调度程序将拥有的线程数.
current number of thread = available processor * parallelism-factor
Run Code Online (Sandbox Code Playgroud)
然后,您可以修复边界以控制此乘法的结果并避免极值.
parallelism-min < current number of thread < parallelism-max
Run Code Online (Sandbox Code Playgroud)
现在,如果你想选择正确的并行因素+边界,你必须问自己在你的调度员负责的给定时间内有多少演员.
假设更多的参与者意味着更多线程似乎是合乎逻辑的,但我强烈建议您监视系统以找出性能问题的根本原因而不是随机调整配置.
作为旁注,您应该检查调度程序的"吞吐量"参数,因为它允许您配置actor的线程分配的公平性.这在批处理过程中确实会产生很大的不同.
# Throughput defines the maximum number of messages to be
# processed per actor before the thread jumps to the next actor.
# Set to 1 for as fair as possible.
throughput = 100
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6102 次 |
| 最近记录: |