Scala 通过akka远程参与者发送较大消息的性能问题
对远程参与者的并发请求的响应需要很长时间才能响应,即1个请求需要300毫秒,但100个并发请求几乎需要30秒才能完成!所以看起来请求是按顺序执行的!请求大小很小,但在序列化之前,JVM中的响应大小约为120 kB。但是这个反应有很深的嵌套case类 在同一台机器上的两个不同JVM上运行时,响应时间也是相似的。但在同一JVM中(即本地参与者)的响应速度很快。它是向一个远程参与者发出并发请求的单个客户端 我在akka调试日志中看到此日志。这意味着什么 调试测试应用程序akka.remote.EndpointWriter-使用 maxWriteCount:50,fullBackoffCount:546,smallBackoffCount:2, 无回退计数:1,自适应回退:2000Scala 通过akka远程参与者发送较大消息的性能问题,scala,akka,akka-remote-actor,Scala,Akka,Akka Remote Actor,对远程参与者的并发请求的响应需要很长时间才能响应,即1个请求需要300毫秒,但100个并发请求几乎需要30秒才能完成!所以看起来请求是按顺序执行的!请求大小很小,但在序列化之前,JVM中的响应大小约为120 kB。但是这个反应有很深的嵌套case类 在同一台机器上的两个不同JVM上运行时,响应时间也是相似的。但在同一JVM中(即本地参与者)的响应速度很快。它是向一个远程参与者发出并发请求的单个客户端 我在akka调试日志中看到此日志。这意味着什么 调试测试应用程序akka.remote.Endp
日志显示写入发送缓冲区失败。这可能表明
- 发送缓冲区太小
- 远程参与者端的接收缓冲区太小
- 网络问题
akka {
remote {
netty.tcp {
# Sets the send buffer size of the Sockets,
# set to 0b for platform default
send-buffer-size = 1024000b
# Sets the receive buffer size of the Sockets,
# set to 0b for platform default
receive-buffer-size = 2048000b
}
# Controls the backoff interval after a refused write is reattempted.
# (Transports may refuse writes if their internal buffer is full)
backoff-interval = 1 ms
}
}
有关完整配置,请参阅