Java программа зависла при записи данных в GlusterFS - PullRequest
0 голосов
/ 14 марта 2020

My SpringBoot Java Программа, работающая на виртуальной машине Ubuntu, получает байтовые данные byte[], сохраняет их в памяти, а затем добавляет их список в файл с помощью функции Files.write. Мы можем ожидать, что общее количество байтов будет 30 ГБ. Вот два сценария ios.

  1. Запись данных в обычный каталог виртуальной машины, все идет хорошо.
  2. У нас есть каталог, подключенный к тому GlusterFS. Мы записываем данные непосредственно в этот каталог. Тем не менее, он всегда застревает в какой-то момент без ошибок или исключений. Процессор, память и G C кажутся нормальными через jconsole до того, как он застрял. Затем память становится прямой строкой, начинающейся с того места, где она застряла.

Если я убью программу java, каталог GlusterFs будет недоступен. Я ничего не могу сделать в этом каталоге, даже ls процесс застрял. Если я перезагружаю виртуальную машину или заново монтирую GlusterFS, файл, в который программа Java записывает, будет в защищенном режиме.

Ребята, вы когда-нибудь сталкивались с подобной проблемой? Монтирование GlusterFs предполагает поддержку интерфейса POSIX. Тогда в чем разница между обычным каталогом VM и каталогом, смонтированным на томе GlusterFS? Может быть, проблема в тупиках или таймауте?

...