Интервал автосохранения - это максимум прогресса, который игроки могут потерять за один раз. Игра, которая записывает мир каждые тридцать минут, при остановке сервера без корректного сохранения теряет в среднем пятнадцать минут игры каждого игрока, а в худшем случае - все тридцать. Короткий интервал ограничивает эту потерю ценой короткой заминки при каждой записи мира - заметной на большом мире и невидимой на маленьком. Для большинства серверов разумная середина - десять минут: задайте в Valheim -saveinterval 600, в Rust server.saveinterval 600 (это и так значение по умолчанию), в Palworld AutoSaveSpan в несколько минут, а пятиминутное значение по умолчанию в Minecraft не трогайте. А затем убедитесь, что каждая плановая остановка корректна, потому что корректная остановка сохраняет мир независимо от интервала.
Почему игры не сохраняются непрерывно#
Мир, по которому ходит игрок, хранится в памяти. Записать его на диск - значит сериализовать в файл тысячи или миллионы объектов - изменения рельефа, постройки, существ, контейнеры, - и на большинстве игровых серверов эта работа выполняется в главном потоке симуляции или блокирует его. Пока она идёт, симуляция останавливается или замедляется. Игроки ощущают это как заминку: полсекунды заморозки, откат позиции, дверь, которая открывается с опозданием.
Поэтому каждая игра выбирает компромисс. Сохраняться редко - заминки редкие, но вылет обходится дорого. Сохраняться часто - вылет обходится дёшево, но заминки приходят чаще. Интервал - это и есть этот компромисс, выраженный числом, а правильное число зависит от размера мира, скорости хранилища и того, как часто сервер останавливается некорректно.
Настройки для каждой игры#
| Игра | Настройка | Где | По умолчанию |
|---|---|---|---|
| Valheim | -saveinterval | Аргумент запуска, секунды | 1800 |
| Minecraft (vanilla) | не вынесена | Зашита в игру | каждые 6000 тиков (5 мин) |
| Minecraft (Paper) | ticks-per.autosave | bukkit.yml | 6000 тиков |
| Rust | server.saveinterval | server.cfg или консоль, секунды | 600 |
| Palworld | AutoSaveSpan | PalWorldSettings.ini, секунды | 30 |
| ARK | AutoSavePeriodMinutes | GameUserSettings.ini [ServerSettings] | 15 |
| Factorio | autosave_interval | server-settings.json, минуты | 10 |
| Space Engineers | AutoSaveInMinutes | SpaceEngineers-Dedicated.cfg | 5 |
| V Rising | AutoSaveInterval, AutoSaveCount | ServerHostSettings.json | зависит от версии |
| Project Zomboid | SaveWorldEveryMinutes | серверный .ini | 0 |
| Don't Starve Together | нет | Сохраняется в начале каждого игрового дня |
Значения по умолчанию меняются от версии к версии, так что считайте таблицу подсказкой, где искать, а не гарантией, и перед любыми изменениями проверьте файл по умолчанию, поставляемый с вашей версией.
Valheim
Тридцатиминутное значение по умолчанию в Valheim - настройка, о которой жалеют чаще всего на любом сервере. Мир - это один файл .db, записываемый за один проход, и вылет или остановка из-за нехватки памяти теряет всё с момента последнего сохранения. Уменьшение до 600 ограничивает потерю десятью минутами. На большом, плотно застроенном мире сохранение длится достаточно долго, чтобы игроки заметили подтормаживание; лог сообщает о каждом как World saved ( 450.123ms ) или похоже, так что вы точно видите, во что оно обходится. Ниже примерно пяти минут подтормаживания начинают раздражать больше, чем риск потерь. Остальные настройки запуска Valheim - в руководстве по выделенному серверу Valheim.
Minecraft
Minecraft сохраняется иначе, чем большинство игр. Он записывает изменённые чанки в файлы регионов, а Paper распределяет эту работу по тикам, а не сохраняет всё разом:
chunks: auto-save-interval: default max-auto-save-chunks-per-tick: 24auto-save-interval: default следует ticks-per.autosave из bukkit.yml, а это 6000 тиков - пять минут при 20 TPS. max-auto-save-chunks-per-tick ограничивает, сколько записывается за один тик, поэтому на сервере Paper заминка от сохранения почти никогда не видна. Чанки также сохраняются при выгрузке. Причин что-то здесь менять мало; если сохранения видны в профиле spark, проблема в хранилище или размере мира, а не в интервале. Про save-off, save-all и согласованные копии - в статье о backup и восстановлении мира Minecraft.
Rust
Rust сохраняет всю карту каждые server.saveinterval секунд, по умолчанию 600, и каждый раз печатает строку с количеством сущностей и таймингами. На карте в конце вайпа с сотнями тысяч сущностей сохранение может занимать секунду и больше, и игроки ощущают это как заморозку. На больших серверах интервал часто увеличивают, чтобы уменьшить заморозки, - это обмен лагов на риск. Многие владельцы оставляют 600 и мирятся с заморозкой, потому что вылет сервера Rust с модами в конце вайпа - не редкость.
Palworld
AutoSaveSpan находится внутри длинной строки OptionSettings=(...) в PalWorldSettings.ini, в секундах. По умолчанию сохранение происходит очень часто. На оживлённом сервере с множеством баз каждое сохранение тяжелее, и если игроки жалуются на периодические заморозки, попробуйте увеличить его до нескольких минут, а не наоборот. Как править эту строку, не ломая её, объясняется в статье о настройках сервера Palworld.
ARK
По умолчанию стоит AutoSavePeriodMinutes=15 в [ServerSettings], а сохранения ARK на большой карте с множеством прирученных существ долгие - несколько секунд заморозки на старом мире это норма. Пятнадцать минут - разумный компромисс; если опуститься ниже десяти на большом мире, заморозки станут достаточно частыми, чтобы раздражать.
Factorio
Factorio на время сохранения ставит игру на паузу для всех игроков и показывает полосу сохранения. autosave_interval (минуты, по умолчанию 10) и autosave_slots (по умолчанию 5) задают, как часто сохраняться и сколько ротируемых автосохранений хранить. На Linux non_blocking_saving форкает процесс, чтобы сохраняться в фоне без паузы; эта опция помечена как экспериментальная, и пока она работает, потребление памяти ненадолго удваивается. Окупается она на поздних мегабазах с долгими сохранениями. Подробнее - в руководстве по headless-серверу Factorio.
Игры, которые сохраняются на ходу
Некоторые игры пишут непрерывно, по регионам или по чанкам при выгрузке, и «интервал» для них менее важен. Project Zomboid записывает чанки карты при выгрузке, а игроков - при выходе, и SaveWorldEveryMinutes по умолчанию равен 0, то есть отдельного полного сохранения мира по таймеру нет. 7 Days to Die тоже записывает регионы при выгрузке и не выносит простой интервал в serverconfig.xml; её консольная команда saveworld принудительно сохраняет всё. Don't Starve Together сохраняется в начале каждого игрового дня. В этих играх вылет теряет меньше, чем можно подумать по таблице, но принудительное сохранение перед плановыми остановками и backup всё равно важно.
Сколько на самом деле стоит сохранение#
Сохранение делают дорогим три вещи, и интервал - лишь одна из них.
- Размер мира. Объём записи растёт с исследованной площадью, постройками и сущностями. Месячный мир может сохраняться в десять раз дольше нового. Вот почему сервер, который никогда не подтормаживал, начинает это делать к концу своей жизни.
- Работа в главном потоке. Сериализация объектов обычно идёт в потоке симуляции. Запас CPU помогает, но сама работа в большинстве игр не распараллеливается. Почему один загруженный поток выглядит как низкая общая загрузка, объясняется в статье о том, как читать загрузку CPU игрового сервера.
- Хранилище. Запись сотен мегабайт на медленные диски добавляет секунды. NVMe делает дисковую часть почти бесплатной, поэтому заминка, оставшаяся на быстром хранилище, - почти целиком сериализация. Где NVMe помогает, а где нет, разобрано в статье о том, что на самом деле меняет NVMe.
Сначала измеряйте, потом меняйте. Большинство игр пишут в лог каждое сохранение с длительностью или хотя бы с отметками времени начала и конца. Понаблюдайте за тремя-четырьмя сохранениями в пиковое время, и вы будете знать реальную цену. Сохранение на 200 мс каждые пять минут - это ничто; сохранение на 3 секунды каждые пять минут - проблема архитектуры, и решать её нужно миром или тарифом, а не более длинным интервалом.
Сколько теряется при вылете#
Если сервер останавливается некорректно в случайный момент, ожидаемая потеря - половина интервала, а в худшем случае - весь интервал. Это на каждого игрока: компания из десяти человек, каждый из которых теряет пятнадцать минут, - это два с половиной часа совокупной игры.
| Интервал | Средняя потеря | Худший случай | Заминок от сохранения в час |
|---|---|---|---|
| 30 мин | 15 мин | 30 мин | 2 |
| 15 мин | 7.5 мин | 15 мин | 4 |
| 10 мин | 5 мин | 10 мин | 6 |
| 5 мин | 2.5 мин | 5 мин | 12 |
| 2 мин | 1 мин | 2 мин | 30 |
Другое важное число - как часто случаются некорректные остановки. Стабильный сервер, который перезапускается только по расписанию, почти ничего не теряет при любом интервале. Сервер, работающий у предела памяти, сервер с большим количеством модов или сервер игры с частыми багами, приводящими к вылетам, останавливается некорректно часто, и для них короткий интервал стоит многих заминок. Если вы не знаете, как часто вылетает ваш сервер, сначала выясните это - статья о том, почему ваш игровой сервер постоянно перезапускается показывает, как отличить вылет от остановки из-за памяти и от расписания.
Корректные остановки делают интервал менее важным#
Каждая игра из таблицы сохраняется, когда её правильно останавливают. Корректная остановка - собственная команда остановки игры или сигнал, который игра обрабатывает, - записывает мир перед выходом. Kill - нет.
- Stop и Restart в панели обычно отправляют команду остановки игры или сигнал и ждут. Это сохраняет мир.
- Kill завершает процесс без предупреждения. Это теряет всё с момента последнего сохранения.
- Остановка из-за нехватки памяти с точки зрения игры ведёт себя как kill.
- Сбой хостинга или ноды ведёт себя как kill.
В RE:NODE сервер, достигший лимита памяти, останавливается ядром и перезапускается начисто, а не уходит в swap, - так лучше для всего остального на машине, но для игры это остановка без сохранения. Если график памяти показывает, что ваш сервер упирается в потолок, сократите интервал сохранения, пока не устраните причину или не перейдёте на тариф выше; как найти эту причину, рассказано в статье об утечках памяти на игровых серверах. Разница между корректной остановкой и kill - это ещё и причина, по которой некоторые игры только под Windows, запущенные под Wine, требуют особой осторожности: сохраняются ли они по сигналу остановки, зависит от игры, как объясняется в статье Wine и Proton для серверов только под Windows.
Автосохранения - это не backup#
Многие игры держат ротируемые файлы автосохранений - слоты Factorio, нумерованные автосохранения Satisfactory, .old и backup по таймеру в Valheim. Они помогают ровно от одного сбоя: повреждения последнего сохранения. Они лежат в той же папке, на том же диске, на том же сервере, так что удалённый сервер, плохой мод, который портит каждое сохранение, к которому прикасается, или ошибка в файловом менеджере заберут их все.
Backup - это копия в другом месте, сделанная по расписанию, которую вы хотя бы раз восстанавливали. И backup содержит только то, что игра записала на диск к этому моменту, поэтому важен порядок: сначала сохранение, потом backup.
В RE:NODE вкладка Schedules выполняет упорядоченные задачи с задержками - консольную команду, backup, действие с питанием - по cron-выражению, так что такая последовательность может работать сама:
Schedule: every 6 hours (0 */6 * * *) 1. Console command: save (the game's own save command) 2. Wait 30 seconds 3. Create backupЗамените save на команду своей игры: save-all для Minecraft, saveworld для 7 Days to Die, server.save для Rust. Слоты для backup есть на каждом игровом тарифе, хранятся вне машины и восстанавливаются одной кнопкой. Последнюю часть того предложения, которую люди обычно пропускают, объясняет статья о backup, которые действительно восстанавливаются. Синтаксис расписания разобран в статье о cron-выражениях.
Ручные сохранения в важные моменты
Интервал защищает от случайного вылета. Некоторые моменты не случайны, и ручное сохранение перед ними стоит секунду и полностью убирает риск. Сохраняйтесь перед:
- Установкой или обновлением мода или плагина. Если он уронит сервер при загрузке, мир на диске будет актуальным, и откат мода ничего не потеряет.
- Обновлениями игры. Сделайте сохранение и backup; обновление может сконвертировать сохранение так, что старая версия его не прочитает.
- Боями с боссами, рейдами и событиями. Именно эти минуты игроки помнят как потерянные, и именно в эти моменты серверы чаще всего захлёбываются под нагрузкой.
- Крупными админскими изменениями. Очистка сущностей, удаление регионов, смена модификаторов мира, правка конфига, который игра читает при запуске.
- Передачей консоли кому-то новому. Сохранение даёт чистую точку для возврата, если команда пойдёт не так.
Большинство игр пишут сохранение в лог, так что дождитесь строки подтверждения в консоли, прежде чем продолжать. В некоторых играх есть команды, в названии которых есть «save», но которые только ставят сохранение в очередь, а не выполняют его; о том, что оно завершено, говорит именно строка в логе.
Как выбрать свой интервал#
Короткая процедура, подходящая для любой игры:
- Найдите настройку и её текущее значение по таблице выше или в конфиге по умолчанию вашей игры.
- Измерьте цену сохранения в пиковое время, по логу.
- Посчитайте некорректные остановки за последний месяц по истории консоли или уведомлениям о вылетах.
- Выберите интервал, при котором заминка незаметна игрокам или потеря для них приемлема, - спросите их, что им мешает больше.
- Добавьте расписание «сохранение, затем backup», чтобы backup никогда не были старше последнего сохранения.
- Пересматривайте, когда мир растёт. Настройка, выбранная в первую неделю, может оказаться неправильной на третий месяц.
FAQ#
Какой интервал автосохранения выбрать для Valheim?
-saveinterval 600, десять минут, подходит большинству компаний. Тридцатиминутное значение по умолчанию теряет слишком много после вылета. Опускайтесь ниже, только если мир достаточно мал и сохранения незаметны, и проверьте время сохранения в логе.
Почему мой сервер замирает на секунду каждые несколько минут?
Почти всегда это автосохранение. Убедитесь, сопоставив заморозку со строками сохранения в логе. Больший мир или медленное хранилище делают её длиннее. Увеличение интервала делает её реже, но увеличивает то, что теряется при вылете.
Занимает ли более короткий интервал автосохранения больше места на диске?
Для самого мира обычно нет - он перезаписывается. Игры с ротируемыми автосохранениями занимают больше места при более частом сохранении, только если при этом хранят и больше слотов. Записей на диск становится больше, но на NVMe это мало что значит.
Теряю ли я прогресс при перезапуске сервера из панели?
Нет, если перезапуск корректный. Обычные Stop или Restart дают игре сохраниться перед выходом. Всё с момента последнего автосохранения теряется при kill, вылетах и остановках из-за нехватки памяти.
Нужно ли сохраняться перед backup?
Да. Backup копирует то, что лежит на диске. Если игра последний раз сохранялась двадцать минут назад, backup будет двадцатиминутной давности. Отправьте команду сохранения, дождитесь её завершения, затем делайте backup.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.