2017-10-22 273 views
0

我正在使用activemq。 KahaDB是activemq的默認消息存儲。但它不斷增加,最終耗盡了磁盤空間。即使所有消息都被確認,它仍然會不斷增大,並在其數據存儲區中不斷創建新的日誌文件。KahaDB錯誤「磁盤上沒有剩餘空間」。如何解決這個問題?

我沒有設置與KahaDB相關的屬性,它使用了默認屬性。

 broker = new BrokerService(); 
     TransportConnector connector = new TransportConnector(); 
     connector.setUri(new URI("tcp://localhost:61616")); 
     broker.addConnector(connector); 
     broker.start(); 

這些是我在經紀人上設置的唯一屬性。有人可以告訴我可以在KahaDB上使用的屬性沒有這個錯誤嗎?

+0

可能有幾個原因導致磁盤空間不足。我建議再研究一下ActiveMQ文檔/指南。 –

回答

0

KahaDB日誌和索引文件存在很多原因,其中一些原因並不總是顯而易見,所以您需要進行一些調試並查看保留日誌文件的內容,它可以像一個未經確認的消息保存整個日誌文件,並且在某些情況下將來的日誌文件會跟蹤該日誌中其他消息的消息。

ActiveMQ網站上有一個很好的article關於這方面的研究,以便你可以看到你的情況是什麼東西保持在日誌中的活着。使用最新版本也是一個不錯的主意,因爲事情會沿着這條路被固定下來,以防日誌在不應該出現的時候出現。

+0

我絕對沒有任何未經確認的消息。如果郵件發送給DLQ,那麼是否會阻止整個日誌文件被刪除? 讓我們來看一個場景,如果DLQ中有20條消息,並且所有20條消息都存在於不同的日誌文件中,那麼它會保留我相信的所有20個日誌文件,對吧? – hars

+0

是的,DLQ與其他任何隊列一樣是一個隊列,如果消息稀疏地佈置,那麼它們將所有日誌保留在它們所在的位置。使用我給出的鏈接中提供的調試信息當然會告訴你,如果你只是花了一些時間。 –

相關問題