Мы используем кластер узлов ActiveMQ 5.11.1 (охраняется Zookeepers). Узлы используют хранилище ReplicatedLevelDB. Приложение может создавать и потреблять сообщения, но начиная с некоторого времени go мы заметили очень странную проблему.
Кажется, что журналы ActiveMQ удаляются, но их FD открываются (ActiveMQ Java process), поэтому Linux не может очистить эти файлы. В конце мы имеем утечку пространства, которая является плохой.
[root@server dirty.index#] lsof | grep -o "/home/.*" | grep deleted | sort | uniq
/home/activemq/activemq-data/000000126ecb3f49.log (deleted)
/home/activemq/activemq-data/00000012750b4590.log (deleted)
[root@server activemq-data#] lsof | grep -o "/home/.*" | grep deleted | wc -l
280
Это происходит только на главном узле. После перезапуска узла новый мастер выбирается и все эти файлы удаляются. У нового мастера та же проблема.
Мы включили TRACE
уровень журнала для ActiveMQ - не повезло, ничего подозрительного (ну, или мы что-то упустили). Очереди не большие, максимум 5-6 сообщений. Все сообщения потребляются быстро. Там нет очевидных сообщений об ошибках. APM также не показывает ничего подозрительного
ReplicatedLevelDB config:
<persistenceAdapter>
<replicatedLevelDB
directory="activemq-data"
replicas="5"
bind="tcp://0.0.0.0:61619"
zkAddress="xx.xxx.xx.30:2181,xx.xxx.xx.31:2181,xx.xxx.xx.32:2181,xx.xxx.xx.33:2181,xx.xxx.xx.34:2181"
zkPassword=""
zkSessionTimeout="3s"
zkPath="/xxx02"
sync="quorum_mem"
hostname="some.server"
/>
</persistenceAdapter>
Нет недавних изменений в конфигурации ActiveMQ.
Мы застряли на данный момент. Что мы могли бы проверить больше?