在某些容器箱中,历史记录队列不工作。我看到此异常: 2018-11-17 16:30:57.825 failsafe-发件人警告n.o.c.q.i.s.SingleChronicleQueueExcerpts$StoreTailer -无法附加EOF,正在跳过net.openhft.chronicle.wire.AbstractWire.writeEndOfWire(AbstractWire.java:459):header: 80000000,pos: 104666 at net.openhft.chronicle.queue.impl.single.SingleChronicleQueueStore.writeEOF(SingleChronicleQueueStore.java:349) at java.util.concurrent.TimeoutException
我想知道为什么只在某些VM中。
注意:我们使用的是NFS文件系统
尝试了解NFS中的行为
发布于 2019-06-04 18:51:21
Chronicle不支持任何网络文件系统的操作,可以是NFS、AFS、基于SAN的存储或任何其他文件系统。这是因为这些文件系统没有提供Chronicle使用的内存映射文件所需的所有原语。
或者换一种说法,Chronicle使用堆外内存映射文件,而这些文件使用基于内存映射CAS的锁,通常这些CAS操作在使用网络附加存储时不是原子的进程之间,当然也不是托管在不同机器上的进程之间的原子操作。如果您的测试有时在文件系统和/或OS的不同组合上工作,那么您的测试可能没有遇到并发竞争,或者在NAS和OS的某些组合上,硬件和OS可能已经遵守了这些CAS操作,但是,我们认为这是非常不可能的。为了解决这个问题,我们创建了一个名为chronicle queue -enterprise的产品,它是一个商业产品,可以让您使用TCP/IP在机器之间共享一个队列。有关编年史-队列-企业的更多信息,请联系sales@chronicle.software。
发布于 2019-06-10 16:18:43
为了在计算机之间可靠地分发数据,您需要使用Chronicle。NFS不支持机器之间的原子内存操作。
https://stackoverflow.com/questions/56441972
复制相似问题