我们在低延迟应用程序(在 Linux Centos 机器上)中使用Vanilla Chronicle Queue版本 3.6.0。
有一天,似乎是随机的,我们的客户报告说应用程序中缺少 2.5 秒的响应(我们已经运行了好几个月没有发生这种情况)。我们在延迟时检查了顶层文件,发现当时有一个进程正在运行该flush
命令。(上面的屏幕截图发布在下面。)
我们猜测 O/S 将 Chronicle 内存页面刷新到磁盘,这阻止了我们的处理线程继续,直到刷新完成。指向相同结论的另一条信息是内部应用程序统计数据似乎显示延迟发生在线程将新条目写入 Chronicle 的处理点。
如果发生这种情况,我们不确定是什么导致了 Chronicle 刷新,因为当时有很多可用内存(125G 中有 110G 可用)。
所以问题是:
有没有办法知道 Chronicle 何时/是否刷新到磁盘?
什么因素会导致这么长的冲洗时间?(这似乎在这几个月里只发生过一次。)