Сервер Minecraft выключается, перезапускается или откатывает мир

Перезапуск сервера может быть запланированным, ручным или аварийным. Откат на несколько секунд обычно означает, что процесс завершился до очередного сохранения мира. Сначала определите тип остановки, затем меняйте настройки.

Нормальная остановка#

При корректном выключении в консоли есть последовательность:

Stopping server
Saving players
Saving worlds
ThreadedAnvilChunkStorage: All dimensions are saved

Такой сервер получил команду stop и успел сохранить данные. Проверьте планировщик задач, действия администраторов и расписание рестартов.

Если перед остановкой последовательно отключаются игроки и сохраняются миры, это не похоже на внезапное завершение процесса.

Аварийная остановка#

При аварии лог обрывается без полного сохранения или содержит исключение. Ищите:

OutOfMemoryError
The server has stopped responding
Exception in server tick loop
Killed
Exit code: 137

Файл logs/latest.log отражает работу Minecraft. Если создан каталог crash-reports, приложите самый свежий отчет. При жестком завершении отдельного crash-report может не быть.

Код 137 и нехватка памяти#

Код 137 обычно означает, что процесс был принудительно завершен из-за превышения лимита памяти. Java использует память не только для игровой кучи. Дополнительно нужны ресурсы для потоков, сетевых буферов, метаданных классов и нативных библиотек.

Поэтому Xmx не должен занимать весь лимит тарифа. На BazaHost размер кучи рассчитывается с резервом автоматически. Не заменяйте команду запуска на значение, равное всей доступной памяти.

Высокий показатель RAM на графике сам по себе не является ошибкой. Java старается использовать выделенную кучу и освобождает ее по мере необходимости. Проблема подтверждается аварийным завершением, длительными паузами сборщика мусора или постоянным ростом до лимита.

Что проверить:

  1. Не началась ли проблема после установки мода или плагина.
  2. Нет ли бесконечной генерации чанков.
  3. Не выполняется ли одновременно несколько тяжелых задач.
  4. Не загружено ли слишком много миров.
  5. Подходит ли объем памяти к размеру сборки.

Не устанавливайте случайные наборы флагов Java из старых инструкций. Для современных версий стандартные настройки JVM обычно безопаснее.

Watchdog: сервер перестал отвечать#

Сообщение:

The server has stopped responding

означает, что один игровой тик выполнялся дольше допустимого времени. Причиной может быть:

  • зависший плагин или мод;
  • генерация тяжелого чанка;
  • большое число сущностей;
  • перегруженная ферма;
  • синхронная запись или запрос к внешнему сервису;
  • поврежденный чанк.

В отчете watchdog ищите основной поток Server thread и участок после Current Thread. Не отключайте watchdog без диагностики. Это скроет защитное завершение, но не устранит зависание.

Для повторяющихся лагов снимите профиль spark по инструкции «Оптимизация TPS сервера Minecraft».

Exception in server tick loop#

Это общий заголовок. Реальная причина находится ниже после Caused by. Там часто указаны:

  • имя плагина или мода;
  • тип сущности;
  • координаты проблемного блока;
  • имя мира;
  • поврежденные данные игрока.

Сохраните полный crash-report. Не ориентируйтесь только на заголовок, потому что одинаковая строка встречается у разных проблем.

Если отчет указывает на конкретный мод, сначала проверьте его версию и известные ошибки. Если указаны координаты чанка, сделайте бэкап перед любыми действиями с регионом. Удаление region-файла затрагивает область размером 512 на 512 блоков и не должно быть первым решением.

Почему происходит откат#

Minecraft сохраняет изменения периодически. При штатной команде stop сервер записывает мир перед завершением. При OOM, зависании процесса или отключении ноды последние изменения могут не попасть на диск.

Чтобы уменьшить последствия:

  1. Используйте только команду остановки в панели, а не принудительное завершение.
  2. Настройте регулярные резервные копии.
  3. Перед ручным рестартом при необходимости выполните save-all flush.
  4. Не перезапускайте сервер во время генерации мира или создания бэкапа.
  5. Исправьте первопричину аварий, а не увеличивайте частоту рестартов.

Команда save-all flush полезна перед обслуживанием, но слишком частый автоматический запуск создает лишнюю нагрузку на диск.

Сервер выключается, когда игроков нет#

Строка:

Server empty for 60 seconds, pausing

не означает остановку или аварию. Параметр pause-when-empty-seconds приостанавливает игровые тики, когда сервер пуст. Процесс остается запущенным и возобновляет работу при подключении.

Если панель действительно переводит сервер в состояние «Выключен», проверьте задачи планировщика и строки перед остановкой.

Что собрать для диагностики#

Нужны:

  1. Точное время происшествия с часовым поясом.
  2. Номер сервера.
  3. logs/latest.log и ближайший архив .log.gz.
  4. Свежий файл из crash-reports, если он есть.
  5. Скриншот графика RAM и CPU перед остановкой.
  6. Список последних изменений.
  7. Информация о том, отключились все игроки или только один.

Без точного времени сложно сопоставить лог Minecraft, действия в панели и состояние игровой ноды.

Нужен сервер Minecraft?

Хостинг Minecraft на BazaHost: NVMe, Ryzen 9 и защита от DDoS. Тарифы от 249 ₽/мес.

Выбрать тариф