gpt4 book ai didi

Java TCP/IP 套接字性能问题

转载 作者:可可西里 更新时间:2023-11-01 02:30:30 26 4
gpt4 key购买 nike

我们的应用程序通过 Java 中的 TCP/IP 套接字非常快速地读取数据。我们使用带有非阻塞套接字和选择器的 NIO 库来指示准备好读取。平均而言,读取和处理读取数据的总处理时间为亚毫秒。然而,我们经常看到 10-20 毫秒的尖峰。 (在 Linux 上运行)。

使用 tcpdump 我们可以看到 tcpdump 读取 2 条离散消息之间的时间差,并将其与我们的应用程序时间进行比较。我们看到 tcpdump 似乎没有延迟,而应用程序可以显示 20 毫秒。

我们非常确定这不是 GC,因为 GC 日志几乎没有显示 Full GC,并且在 JDK 6 中(据我了解)默认 GC 是并行的,所以它不应该暂停应用程序线程(除非完整的 GC)。

看起来 Java 的 Selector.select(0) 方法返回读取就绪状态似乎有一些延迟,因为在 TCP 层,数据已经可供读取 ( tcpdump 正在读取它)。

附加信息:在峰值负载下,我们平均处理每条消息约 6,000 x 150 字节,或每秒约 900 MB。

最佳答案

eden 收集仍然会导致 STW 暂停,因此 20ms 可能是完全正常的,具体取决于分配行为和堆大小/Activity 集的大小。

关于Java TCP/IP 套接字性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302609/

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