gpt4 book ai didi

akka - 提高 Akka 远程吞吐量

转载 作者:行者123 更新时间:2023-12-03 18:18:15 30 4
gpt4 key购买 nike

我们正在考虑使用 Akka 进行客户端服务器通信,并尝试对数据传输进行基准测试。目前我们正在尝试发送一百万条消息,其中每条消息都是一个具有 8 个字符串字段的案例类。

目前,我们正在努力获得可接受的性能。我们在客户端和服务器上看到大约 600KB/s 的传输速率和空闲 CPU,所以出现了问题。也许这是我们的 netty 配置。

这是我们的 akka 配置

Server {
akka {
extensions = ["akka.contrib.pattern.ClusterReceptionistExtension"]
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
log-dead-letters = 10
log-dead-letters-during-shutdown = on
actor {
provider = "akka.cluster.ClusterActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "instance.myserver.com"
port = 2553
maximum-frame-size = 1000 MiB
send-buffer-size = 2000 MiB
receive-buffer-size = 2000 MiB
}
}
cluster {
seed-nodes = ["akka.tcp://server@instance.myserver.com:2553"]

roles = [master]
}
contrib.cluster.receptionist {
name = receptionist
role = "master"
number-of-contacts = 3
response-tunnel-receive-timeout = 300s
}
}

}

Client {
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "DEBUG"
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
actor {
provider = "akka.remote.RemoteActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
netty.tcp {
hostname = "127.0.0.1"
port = 0
maximum-frame-size = 1000 MiB
send-buffer-size = 2000 MiB
receive-buffer-size = 2000 MiB
}
}
cluster-client {
initial-contacts = ["akka.tcp://server@instance.myserver.com:2553/user/receptionist"]
establishing-get-contacts-interval = "10s"
refresh-contacts-interval = "10s"
}
}

}

更新:

最后,尽管有关于序列化的讨论(见下文),我们只是将我们的有效负载转换为使用字节数组,这样序列化就不会影响测试。我们发现在使用 jeroMQ(即 zeroMQ 在 java 中重新实现 - 所以仍然不是最快的)的核心 i7 和 24gb ram 上,我们在原始 akka(即没有 zeroMQ 插件)上始终看到大约 200k msgs/sec 或大约 20 MB/sec我们看到大约 10k 消息/秒或略低于 1MB/秒。尝试使用 akka + zeroMQ 会使性能变差。

最佳答案

为了轻松开始远程处理,akka 使用 Java 序列化进行消息序列化,这不是您通常在生产中使用的方法,因为它速度不是很快,而且不能很好地处理消息版本控制。

你应该做的是使用 kryo 或 protobuf 进行序列化,你应该能够获得更好的数字。

您可以在此处阅读相关内容,页面底部还有一些指向可用序列化程序的链接:http://doc.akka.io/docs/akka/current/scala/serialization.html

关于akka - 提高 Akka 远程吞吐量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31860764/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com