我正在查看这里的文档:http://doc.akka.io/docs/akka/2.3.3/java/dispatchers.html http://doc.akka.io/docs/akka/2.3.3/java/dispatchers.html
我们使用 Akka 的方式是为不同的参与者提供两个独立的调度程序(默认的 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
Thanks!
当然,此配置取决于您的硬件。
假设您的计算机上有 2 个可用处理器,那么您可以通过并行因子配置给定调度程序将拥有的线程数。
current number of thread = available processor * parallelism-factor
然后,您可以修复边界来控制此乘法的结果并避免出现极端值。
parallelism-min < current number of thread < parallelism-max
现在,如果您想选择正确的并行因子+边界,您必须问自己在给定时间您的调度程序将负责多少个参与者。
假设更多的参与者意味着更多的线程似乎是合乎逻辑的,但我强烈鼓励您监视系统以找到性能问题的根本原因,而不仅仅是随机调整配置。
作为旁注,您应该检查调度程序的“吞吐量”参数,因为它允许您配置参与者线程分配的公平性。在类似批处理的过程中,这确实可以产生很大的不同。
# 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)