有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何配置和调优Akka Dispatchers

我在这里查看文档:http://doc.akka.io/docs/akka/2.3.3/java/dispatchers.html

我们使用Akka的方式是,为不同的参与者提供两个单独的分派器(默认的fork-join-executors)。我们现在遇到了一些性能问题,我们正在研究如何优化dispatcher配置参数,以及它们如何影响应用程序的性能

我查阅了文档,但并不真正理解配置参数。 例如,对于简单的默认值,fork join executor dispatcher:

这些是什么?我们应该如何配置它们以了解它们如何影响应用程序性能

# 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

谢谢


共 (1) 个答案

  1. # 1 楼答案

    当然,此配置取决于您的硬件

    假设您的计算机上有两个可用的处理器,那么您可以通过并行度因子配置给定调度程序将拥有的线程数

    current number of thread = available processor * parallelism-factor
    

    然后,您可以固定边界以控制此乘法的结果并避免极值

    parallelism-min < current number of thread < parallelism-max
    

    现在,如果您想选择正确的并行因子+边界,您必须问问自己,在给定的时间内,您的调度程序将负责多少参与者

    假设更多的参与者意味着更多的线程似乎是合乎逻辑的,但我强烈建议您监视您的系统,以找到性能问题的根本原因,而不仅仅是随机调整配置

    作为旁注,您应该检查dispatcher的“吞吐量”参数,因为它允许您配置参与者线程分配的公平性。在批处理过程中,这确实会产生很大的不同

    # 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