txAdmin запланированные перезагрузки: установите ежедневную перезагрузку с предупреждениями

Установите автоматические перезагрузки в txAdmin: расписание перезагрузки, объявления перед перезагрузкой, почему ежедневные перезагрузки помогают, и как сохранить данные игроков при выключении сервера.

FiveM сервер, который работает дни, медленно становится хуже: память растет, скрипты оставляют объекты позади, и сбои становятся более распространены. Запланированная перезагрузка в фиксированный час - это самое дешевое исправление. txAdmin имеет это встроено, с предупреждениями игрокам, чтобы никто не был удивлен.

Почему ежедневные перезагрузки помогают

  • Память. Некоторые ресурсы продолжают добавлять в таблицы или объекты, которые они никогда не очищают. Перезагрузка возвращает сервер в свежее состояние.
  • Застрявшее состояние. Оставшиеся объекты, сломанные сессии и скрипты в плохом состоянии исчезают.
  • Предсказуемость. Игроки узнают, что сервер отключается, скажем, в 05:00 и планируют это.
  • Обновления. У вас есть обычная точка для применения обновлений скриптов и новых артефактов. Смотрите updating server artifacts.

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

Установите расписание в txAdmin

  1. Откройте веб-панель txAdmin и перейдите в Settings.
  2. Найдите раздел Restarter (запланированные перезагрузки).
  3. Добавьте время суток, когда вы хотите перезагрузку, в показанном формате, например 05:00. Вы можете добавить более одного.
  4. Сохраните.

Точная раскладка варьируется по версиям, поэтому ищите раздел расписания перезагрузки. Времена следуют часам машины, на которой работает txAdmin, поэтому проверьте его временную зону, если перезагрузка происходит в неправильный час.

Выберите самый тихий час вашего сервера. Проверьте график вашего игрока перед выбором.

Предупреждения перед перезагрузкой

txAdmin объявляет предстоящие перезагрузки игрокам в игре с обратным отсчетом. Вам не нужно писать скрипт для этого. Когда перезагрузка запланирована, игроки получают сообщения за минуты до, и финальное сообщение, когда оно начинается.

Вы также можете перезагрузиться вручную с панели в любое время и дать причину. Сообщение показывается игрокам в первую очередь.

Совет: скажите своим игрокам часы перезагрузки в вашем Discord и на вашем экране загрузки. Мало кто будет против перезагрузки, которая им была сказана.

Сохраните данные игроков при выключении

Риск перезагрузки - потерянный прогресс. Думайте об этом как о трех слоях:

  1. Фреймворк сохраняет символы периодически и когда игрок отключается (playerDropped). ESX, QBCore и QBox все это делают. Когда txAdmin останавливает сервер, игроки отключаются, что вызывает те сохранения в нормальных условиях.
  2. Ваши скрипты должны хранить свои собственные данные в базе данных по мере их изменения или на таймере. Не держите прогресс только в таблице Lua и не пишите его при выключении.
  3. Перехватчики выключения - это последний шанс, не план. Сервер, который был убит или разбился, никогда не запускает их.

txAdmin отправляет события вашим ресурсам, которые вы можете использовать, например, когда приближается запланированная перезагрузка и когда сервер выключается. Два из них - txAdmin:events:scheduledRestart и txAdmin:events:serverShuttingDown. Оба - это события на стороне сервера.

lua
AddEventHandler('txAdmin:events:scheduledRestart', function(eventData)
    if GetInvokingResource() ~= 'monitor' then return end
    -- eventData holds the time left and the announcement text
    print('A restart is scheduled soon')
end)

AddEventHandler('txAdmin:events:serverShuttingDown', function(eventData)
    if GetInvokingResource() ~= 'monitor' then return end
    -- save anything your script still holds in memory
    SaveAllMyData()
end)

Проверка GetInvokingResource() гарантирует, что событие приходит от txAdmin (его ресурс называется monitor) и не от игрока или другого скрипта. Проверьте документацию txAdmin для полного списка полей данных события в вашей версии.

SaveAllMyData представляет вашу собственную функцию, которая пишет состояние вашего скрипта в базу данных. Держите это быстро: сервер не ждет вечно.

Практические советы

  • Перезагружайте реже, чем вы думаете, что вам нужно, но не никогда. Один раз в день работает для большинства серверов. Тяжелые серверы делают дважды.
  • Создайте резервную копию перед перезагрузкой. Дамп базы данных, запланированный за несколько минут до этого, означает, что вы всегда можете вернуться. Смотрите backing up your server.
  • Посмотрите первый старт после перезагрузки. Если скрипт не запускается, вы хотите знать перед присоединением игроков. Проверьте консоль txAdmin.
  • Используйте порядок ресурсов. Скрипты, которым нужна база данных или ядро, должны запускаться после них. Смотрите server.cfg resource order.
  • Не перезагружайте во время событий. Если вы запускаете запланированное событие, переместите перезагрузку или сделайте это вручную после этого.

Что перезагрузка не исправляет

Если сервер сбивается или отстает с момента его запуска, проблема - скрипт, не время работы. Проверьте server thread hitch warnings и resmon. Расписание только лечит медленное нарастание.

Контрольный список

Симптом Решение
Сервер становится медленным после часов Добавьте ежедневную перезагрузку, затем найдите утечку скрипта
Перезагрузка в неправильный час Проверьте временную зону машины, запускающей txAdmin
Игроки удивлены перезагрузкой Используйте объявления txAdmin и опубликуйте время перезагрузки
Прогресс потерян при перезагрузке Сохраняйте в базе данных по мере изменения данных, не только при выключении
Нужна последняя сохранение Обработайте txAdmin:events:serverShuttingDown и проверьте GetInvokingResource()
Перезагрузка нарушает скрипты Исправьте порядок запуска и прочитайте консоль после перезагрузки

Короткие ответы

Как часто FiveM сервер должен перезагружаться?

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

Потеряют ли игроки прогресс при перезагрузке?

Нет, если ваш фреймворк и скрипты правильно сохраняют. Фреймворки сохраняют игроков периодически и когда они отключаются, и ваши собственные скрипты должны сохранять на таймере тоже, не только при выключении.

Где мне установить время перезагрузки?

В настройках веб-панели txAdmin, в разделе перезагрузки. Вы добавляете время суток, и txAdmin показывает предупреждения игрокам перед каждой.

Скрипты без этой проблемы

Crypto MiningКупите склад, соберите фермы по деталям и майните монеты на живом рынке.Смотреть скрипт →Arcade MachinesСемь аркадных игр в настоящих автоматах, с таблицами рекордов и ставками.Смотреть скрипт →Tebex TemplateПремиальная тема для вашего магазина Tebex без кода, полностью настраиваемая из панели Tebex.Смотреть скрипт →

Читайте также