«Сервер после обновления не работает» — фраза, за которой прячутся как минимум две разные поломки. В первой процесс не доходит до состояния, когда он готов принимать игроков: он падает, зависает на загрузке или тихо перезапускается. Во второй процесс жив, мир загружен, но клиент либо не видит сервер, либо получает отказ при входе. Лечатся эти случаи по-разному, и если перепутать их в самом начале, можно полчаса менять порты на сервере, который просто не успел прочитать мир.
Поэтому разумнее не искать «то самое исправление», а идти по дереву: от того, что можно наблюдать, к тому, что нужно проверять. Каждый шаг отсекает часть возможных причин и не требует разрушительных действий. В частности, ни на одном этапе здесь не понадобится удалять сохранение или переустанавливать сервер вместе с каталогом мира. Прогресс игроков — единственное, что нельзя пересоздать, и всё остальное в этой истории вторично.
Сначала выясняем, дошёл ли процесс до готовности
Начните с самого приземлённого вопроса: что делает процесс сервера прямо сейчас. Есть три наблюдаемых состояния, и каждое ведёт в свою ветку.
- Процесса нет. Он запустился и завершился. Смотреть нужно вывод консоли или журнал сервиса: причина почти всегда записана в последних строках перед остановкой.
- Процесс есть, но потребляет ресурсы и не отвечает. Возможно, он ещё грузит мир. После обновления формат данных или объём загрузки могут измениться, поэтому первый старт иногда дольше обычного. Прежде чем делать выводы, дайте ему время и следите за нагрузкой на диск и процессор.
- Процесс стабилен, в журнале видна готовность, но клиент не входит. Это уже вторая ветка: сервер жив, значит, ищем разницу между тем, что ждёт сервер, и тем, что приносит клиент.
Здесь полезен простой приём: не полагаться на сообщение клиента. Клиент говорит «нет соединения» и в случае несовместимости версий, и в случае закрытого порта, и в случае сервера, который ещё грузится. Сообщение одинаково, причины разные. Источником истины о состоянии сервера служит сам сервер: его журнал и административные команды.
Если вы можете подключиться к серверу как администратор, команда /Info выводит сведения о сервере (так описано в документации по командам администратора). Ответ на неё — быстрый способ убедиться, что сервер не просто «существует» как процесс, а реально обрабатывает запросы, и заодно увидеть, какую версию он о себе сообщает. Если команда не отвечает, вы остаётесь в первой ветке, и разговор о клиентах преждевременен.
Что искать в журнале запуска
Не пытайтесь прочесть весь журнал. Ищите три вещи: строки об ошибках и отказах рядом с моментом остановки, упоминания файла настроек или параметров, и признаки того, что мир начал загружаться или завершил загрузку. Если последняя строка перед падением относится к настройкам, следующая ветка дерева — параметры. Если к загрузке данных мира, то это вопрос сохранений. Если журнал чист, а процесс просто исчезает, проверьте, не убивает ли его система из-за нехватки памяти: после обновления потребление может отличаться, а ресурсы вашего тарифа могут оказаться тесноваты.
Версии клиента и сервера: самая частая разница
Когда сервер готов, а игроки не входят, первым подозреваемым стоит назначить несовпадение версий. Игровой клиент обновляется у игроков по своему расписанию, сервер — по вашему. Если обновился только один из участников, входа не будет, хотя сеть при этом исправна. Это не значит, что любое «не входит» объясняется версиями, но проверить это дёшево, а исключение причины сильно сужает поиск.
Разберите ситуацию по тому, кто и как жалуется:
| Что наблюдается | Что это вероятнее всего означает | Следующий шаг |
|---|---|---|
Не входят все игроки сразу, сервер отвечает на /Info | Общая разница: версия сервера или общая настройка доступа | Сверить версию сервера с версией клиента у нескольких игроков |
| Входят одни, не входят другие | Разные версии клиентов или ограничения по платформе | Сравнить версию клиента и платформу у входящих и не входящих |
| Не входит никто, включая администратора с самого сервера | Сервер не готов или не слушает ожидаемый порт | Вернуться к журналу и параметрам запуска |
| Вход идёт долго и обрывается по таймауту | Может быть нагрузка при загрузке мира, а не блокировка сети | Посмотреть нагрузку на диск и процессор во время входа |
Последняя строка таблицы заслуживает отдельного внимания. Таймаут — это лишь сообщение о том, что ответ не пришёл вовремя. Не пришёл он потому, что пакеты не дошли, или потому, что сервер был занят и не успел ответить, — клиент не знает. Считать любой таймаут сетевой блокировкой — значит искать проблему в файрволе, который, возможно, ни при чём. Сначала сопоставьте таймаут с состоянием сервера в тот же момент.
Практичный способ проверки версий — собрать минимальную пару. Попросите одного игрока убедиться, что его клиент обновлён, и попробуйте зайти самим с заведомо актуального клиента. Если вход с актуального клиента работает, а у части игроков нет, виновата не сеть и не сервер, а отставшие клиенты. Если не работает даже у вас, версия клиента, скорее всего, ни при чём, и дерево ведёт дальше.
Загрузка сохранения и сетевой доступ — две разные задачи
Теперь нужно развести ещё два предположения, которые легко склеить: «сервер не читает мир» и «сервер недоступен по сети». Внешне они похожи, потому что и там и там игрок остаётся за дверью. Но признаки у них разные.
Если сервер не может нормально загрузить мир, он обычно не достигает состояния готовности. В журнале это видно как остановка на этапе загрузки данных или завершение процесса после ошибки. Сеть тут вторична: слушать порт процесс либо не начал, либо не довёл дело до конца. Если же мир загружен, сервер отвечает на административные команды, а клиент всё равно не входит, то загрузка сохранения исключена, и остаются версии, платформенные ограничения, порт и файрвол.
Эта развилка нужна ради одного практического вывода: ошибка загрузки сохранения не повод удалять сохранение. Соблазн велик: «сервер не стартует, давайте начнём с чистого листа». Но чистый старт ничего не диагностирует и уничтожает единственную ценность. Сначала нужно сделать копию каталога с данными мира и держать её отдельно от рабочей. Дальше можно экспериментировать сколько угодно, включая запуск нового пустого мира в другом каталоге для проверки, стартует ли сам сервер.
Это и есть самая полезная диагностическая техника здесь: запустить сервер на свежем каталоге данных. Если пустой мир загружается и клиенты входят, значит, версия, сеть и параметры в порядке, а проблема в самом старом мире. Если и пустой мир не стартует или не пускает игроков, ваш прежний мир ни при чём, и его трогать не нужно вообще. Один такой тест разделяет две большие гипотезы и при этом ничем не рискует, пока оригинал лежит нетронутым.
Сохранить мир перед любыми опытами
Прежде чем менять что-либо ещё, зафиксируйте состояние. Если сервер жив, команда /Save сохраняет мир (см. команды администратора). Для остановки сервера документация различает два пути: /Shutdown позволяет предупредить игроков и отложить остановку, а /DoExit означает принудительную остановку. Для диагностики разумнее первый путь: сначала /Save, затем штатная остановка с предупреждением. Принудительное завершение стоит оставлять на случай, когда сервер не реагирует, потому что оно не оставляет игрокам и самому миру времени на аккуратное закрытие.
Ещё одна деталь: параметр bIsUseBackupSaveData включает копии мира, но, как сказано в документации по настройкам, увеличивает нагрузку на диск. Если вы его включили после обновления и сервер стал заметно медленнее при входе, это стоит учитывать при разборе таймаутов: возможно, дело в диске, а не в сети. Но отключать резервные копии ради эксперимента, не имея собственных, не стоит: сначала сделайте свою копию каталога вручную.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации Россия, США, Франция и Великобритания. Оплата картой РФ и по СБП.
Параметры запуска и файл настроек: что могло измениться
Если версии совпадают, а мир ни при чём, остаются параметры. После обновления у вас может быть старый файл настроек, старая командная строка и новая версия сервера, которая относится к ним иначе. Здесь работает правило: сверяйтесь с документацией той версии, которую запускаете, а не с памятью и не со старыми инструкциями.
Правите ли вы нужный файл
Частая ловушка — редактирование не того файла. По документации по настройкам, изменять нужно Pal/Saved/Config/LinuxServer/PalWorldSettings.ini либо соответствующий файл в каталоге WindowsServer. Правка DefaultPalWorldSettings.ini сама по себе настройки не применяет. Это объясняет классическую историю: человек долго меняет значения, перезапускает сервер, ничего не происходит, и он делает вывод, что обновление «сломало» настройки. На деле сервер читал другой файл всё это время.
Проверка простая: убедитесь, что вы правите файл в каталоге платформы, соответствующей вашей ОС, а не шаблон по умолчанию. И после правки перезапустите сервер штатным путём: сначала /Save, затем остановка с предупреждением.
Устаревшие параметры доступа
Особо опасны параметры, которые менялись между версиями. По документации, CrossplayPlatforms задаёт разрешённые платформы, а прежний AllowConnectPlatform помечен недоступным в текущей документации. Если в вашем старом файле остался AllowConnectPlatform, он, вероятно, больше не выполняет то, что вы от него ожидаете. Следствие понятно: игроки с некоторых платформ могут не входить не из-за сети, а из-за того, что список разрешённых платформ задан не тем параметром или не так, как вы думали.
Это хороший пример к таблице выше: сценарий «входят одни, не входят другие» нередко объясняется именно платформами, а не версиями клиентов. Сопоставьте, на какой платформе играют вошедшие и не вошедшие. Если не входят все с одной платформы, смотрите значение CrossplayPlatforms.
Порт: что именно вы меняли
Отдельная история — порты. В документации по параметрам запуска различаются два понятия: -port меняет порт прослушивания, а publicport предназначен для объявления адреса community server и сам порт прослушивания не меняет. Разница принципиальна. Если вы поменяли только publicport, сервер продолжит слушать прежний порт, а игроки будут получать объявленный адрес, по которому никого нет. Если поменяли -port, но не открыли новый порт в файрволе или в панели хостинга, сервер слушает, но снаружи до него не достучаться.
Для диагностики здесь полезно мысленно разделить три вопроса: на каком порту сервер слушает на самом деле, какой порт объявлен игрокам, какой порт открыт между игроком и сервером. Эти три числа должны совпадать по смыслу. Если сервер слушает один порт, объявлен другой, а открыт третий, соединение не состоится, причём никакое «обновление» тут не виновато: просто параметры, ранее совпадавшие случайно, разъехались.
Старые параметры производительности
Ещё один кандидат — набор, который многие переносили из версии в версию по привычке. В документации для v1.0+ сказано, что старый набор useperfthreads, NoAsyncLoadingThread и UseMultithreadForDS может не улучшать производительность, а его отсутствие иногда лучше (параметры запуска). Из этого не следует, что набор ломает вход. Но он входит в число вещей, которые стоит убрать из командной строки при сравнении с чистым запуском: если сервер без них стартует так же или лучше, лишнее больше не нужно. Это нейтральная проверка: вы не отключаете функцию, а возвращаетесь к минимальной конфигурации.
Исходный набор как точка сравнения
Самая сильная техника в этой диагностике — сравнение с эталоном. Эталон — это минимальный набор: свежая копия сервера нужной версии, настройки по умолчанию в правильном файле, командная строка без лишних параметров, отдельный пустой каталог мира. Если такой сервер запускается и пускает клиента, у вас появляется опорная точка. Дальше вы возвращаете свои настройки по одной, и первая же, после которой вход пропадает, и есть виновник.
Практически это выглядит так. Рядом с рабочим каталогом вы создаёте второй, чистый. Запускаете из него сервер на другом порту, чтобы не конфликтовать с основным. Проверяете вход. Затем копируете в него изменённый файл настроек и снова проверяете. Потом добавляете параметры командной строки, один за другим. Метод медленнее, чем «поменять всё и перезапустить», зато он даёт ответ, а не догадку. И он безопасен для мира: ваш основной каталог остаётся нетронутым, а копию мира вы подключаете к чистому серверу в самую последнюю очередь.
Если вы используете арендованный сервер, такое сравнение удобно делать там, где достаточно ресурсов, чтобы временно поднять второй экземпляр рядом с основным. У VPS MAATRIX есть root-доступ, NVMe-диск и процессоры AMD EPYC, а в публичном предложении перечислены локации UK, US, RU и FR. Тарифы начинаются с Ba (1 vCPU, 2 ГБ RAM, 40 ГБ NVMe) и доходят до Djed (16 vCPU, 32 ГБ RAM, 320 ГБ). Эти ресурсы — отправная точка для вашего собственного теста, а не обещание числа игроков: хватит ли места на второй экземпляр и мир, покажет только пробный запуск. Если же свободных ресурсов мало, второй экземпляр можно запускать после остановки основного, на другом порту, и только на время проверки.
Если вы ещё только настраиваете сервер или хотите свериться со стандартной последовательностью установки, пригодится статья о том, как установить и настроить Palworld на VPS: она помогает собрать тот самый чистый эталон.
Дерево решений целиком
Соберём шаги в одну последовательность. Читайте её сверху вниз и останавливайтесь на первом пункте, который объясняет ваш симптом.
- Процесс не запущен или падает. Читайте последние строки журнала. Упоминание настроек ведёт к проверке файла и параметров, упоминание данных мира — к сохранению, нехватка памяти — к ресурсам.
- Процесс жив, но
/Infoне отвечает. Вероятно, идёт загрузка. Подождите и наблюдайте нагрузку. Если нагрузка спала, а ответа нет — смотрите журнал. - Сервер отвечает, но входят не все. Сравните версии клиентов и платформы вошедших и не вошедших; проверьте
CrossplayPlatformsи убедитесь, что в файле нет устаревшегоAllowConnectPlatform. - Сервер отвечает, не входит никто. Проверьте, какой порт слушает сервер, какой объявлен через
publicportи какой открыт для подключений. - Вход начинается и обрывается по таймауту. Сопоставьте момент таймаута с нагрузкой на диск и процессор; учтите, включены ли копии мира.
- Причина всё ещё не ясна. Запустите чистый сервер на отдельном каталоге и добавляйте изменения по одному.
Обратите внимание, что ни в одном пункте нет слов «удалить сохранение» или «переустановить всё». Это не случайность: ни один из симптомов не доказывает, что мир повреждён. Даже если окажется, что проблема именно в мире, у вас будет копия, и вы будете работать с ней, а не с единственным экземпляром.
Условный пример разбора
Представим вымышленную ситуацию, чтобы показать ход рассуждения; это не отчёт о реальном случае. После обновления сервера игроки жалуются на «нет соединения». Администратор открывает журнал: процесс запущен, мир загружен. Команда /Info отвечает. Значит, первая ветка пройдена: сервер дошёл до готовности.
Дальше администратор спрашивает, входят ли все одинаково. Выясняется, что не входит никто. Версии клиентов у нескольких игроков совпадают с версией сервера. Тогда остаётся порт. В командной строке стоит publicport с новым значением, а -port не менялся. Сервер слушает прежний порт, а игрокам объявляется другой. Администратор приводит оба значения в соответствие и убеждается, что нужный порт открыт. Игроки входят.
Обратите внимание, чем закончился разбор: единственная причина найдена, мир при этом ни разу не пересоздавался, игровой прогресс на месте. Если бы вместо этого администратор начал с удаления сохранения «для чистоты», он бы потерял всё и всё равно остался с неправильным портом: вход не заработал бы и на новом мире.
Когда дерево привело к одному участку
Ценность такой диагностики не в том, что она быстрее, а в том, что она заканчивается конкретным местом. «Не заходит» превращается в «сервер готов, версии совпадают, платформы разрешены, но объявленный порт не тот, что слушает процесс». Это формулировка, с которой можно работать: изменить один параметр, проверить, зафиксировать. Остальное остаётся как было.
Прежде чем закрыть тему, сделайте две вещи. Сохраните рабочую конфигурацию отдельным файлом с датой, чтобы при следующем обновлении у вас был собственный эталон, а не память о том, что вы когда-то меняли. И сделайте копию каталога мира после того, как вход восстановлен: теперь она заведомо соответствует рабочему состоянию. Следующее обновление станет менее тревожным: вы будете знать, какие параметры стоят, какие версии совпадают и где лежит мир, который вы ни разу не поставили под угрозу.