gpt4 book ai didi

Linux 中的 Java 进程需要初始预热

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:29:00 25 4
gpt4 key购买 nike

我们在 RHEL 6.5 上有一个遗留的 java 多线程进程,它对时间非常关键(低延迟),它每天处理数十万条消息。它运行在功能强大的 40cpus Linux 机器上。我们发现该进程在以平均 10ms/msg 处理前 50k 条消息时具有高延迟,并且在这个“预热”时间之后,延迟开始下降并变为大约 7ms,然后变为 5ms,最终停止在大约 3一天结束时 -4 毫秒/秒。

这让我很困惑,我能想到的一种可能性是在开始时调整 map 的大小,直到它达到非常大的容量 - 而且它不再超过负载因子。据我所知, map 没有用初始容量初始化——所以这就是为什么我说可能是这种情况。我试图通过探查器将其放入并在其中抽取数百万条消息,希望从 Java 集合中看到一些“调整大小”方法,但我无法找到其中任何一个。可能是我在寻找错误的东西,或者寻找错误的方向。作为新加入者和现有团队成员的离开,我正在尝试查看是否还有其他我没有想到的原因。

我能想到的另一种可能性是与内核设置有关,但我不确定它可能是什么。

我不认为这是一个编程逻辑问题,因为它在前 30k-50k 消息后以可接受的速度运行。

有什么建议吗?

最佳答案

听起来操作系统需要一些时间才能意识到您的应用程序是一个资源消耗大户。因此,几秒钟后,它会发现您的应用程序文件有很多 Activity ,然后操作系统才通过填充缓存和像这样的操作来处理 Activity 。

关于Linux 中的 Java 进程需要初始预热,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30271733/

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