簡體   English   中英

LMAX Disruptor剩余容量等於0,甚至在等待一段時間之前

[英]LMAX Disruptor remainingCapacity equals 0, even before some time waiting

我通過調用tryPublishEvent function 將數據添加到 Disruptor。 在我等待 40 秒並嘗試通過以下計算檢查unprocessedDataCount后:

long ringBufferUnProcessedCount = disruptor.getBufferSize() 
                                  - disruptor.getRingBuffer().remainingCapacity()

有時remainingCapacity容量值等於 0,即使在獲取ringBufferUnProcessedCount值之前我們等待 40 秒。 這個錯誤很少發生。

你不知道為什么會這樣嗎?

如果disruptor.getRingBuffer().remainingCapacity()等於0,那么這意味着您的中斷器已滿並且您正在經歷背壓

這可能是由兩件事引起的,要么其中一個eventHandlers因某種原因被阻塞並且無法向前推進,要么eventHandlers無法足夠快地處理事件以跟上新事件的產生速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM