txAdmin запланированные перезагрузки: установите ежедневную перезагрузку с предупреждениями
Установите автоматические перезагрузки в txAdmin: расписание перезагрузки, объявления перед перезагрузкой, почему ежедневные перезагрузки помогают, и как сохранить данные игроков при выключении сервера.
FiveM сервер, который работает дни, медленно становится хуже: память растет, скрипты оставляют объекты позади, и сбои становятся более распространены. Запланированная перезагрузка в фиксированный час - это самое дешевое исправление. txAdmin имеет это встроено, с предупреждениями игрокам, чтобы никто не был удивлен.
Почему ежедневные перезагрузки помогают
- Память. Некоторые ресурсы продолжают добавлять в таблицы или объекты, которые они никогда не очищают. Перезагрузка возвращает сервер в свежее состояние.
- Застрявшее состояние. Оставшиеся объекты, сломанные сессии и скрипты в плохом состоянии исчезают.
- Предсказуемость. Игроки узнают, что сервер отключается, скажем, в 05:00 и планируют это.
- Обновления. У вас есть обычная точка для применения обновлений скриптов и новых артефактов. Смотрите updating server artifacts.
Перезагрузка скрывает утечку, она не исправляет ее. Если сервер явно медленнее после нескольких часов, найдите причину с resmon.
Установите расписание в txAdmin
- Откройте веб-панель txAdmin и перейдите в Settings.
- Найдите раздел Restarter (запланированные перезагрузки).
- Добавьте время суток, когда вы хотите перезагрузку, в показанном формате, например
05:00. Вы можете добавить более одного. - Сохраните.
Точная раскладка варьируется по версиям, поэтому ищите раздел расписания перезагрузки. Времена следуют часам машины, на которой работает txAdmin, поэтому проверьте его временную зону, если перезагрузка происходит в неправильный час.
Выберите самый тихий час вашего сервера. Проверьте график вашего игрока перед выбором.
Предупреждения перед перезагрузкой
txAdmin объявляет предстоящие перезагрузки игрокам в игре с обратным отсчетом. Вам не нужно писать скрипт для этого. Когда перезагрузка запланирована, игроки получают сообщения за минуты до, и финальное сообщение, когда оно начинается.
Вы также можете перезагрузиться вручную с панели в любое время и дать причину. Сообщение показывается игрокам в первую очередь.
Совет: скажите своим игрокам часы перезагрузки в вашем Discord и на вашем экране загрузки. Мало кто будет против перезагрузки, которая им была сказана.
Сохраните данные игроков при выключении
Риск перезагрузки - потерянный прогресс. Думайте об этом как о трех слоях:
- Фреймворк сохраняет символы периодически и когда игрок отключается (
playerDropped). ESX, QBCore и QBox все это делают. Когда txAdmin останавливает сервер, игроки отключаются, что вызывает те сохранения в нормальных условиях. - Ваши скрипты должны хранить свои собственные данные в базе данных по мере их изменения или на таймере. Не держите прогресс только в таблице Lua и не пишите его при выключении.
- Перехватчики выключения - это последний шанс, не план. Сервер, который был убит или разбился, никогда не запускает их.
txAdmin отправляет события вашим ресурсам, которые вы можете использовать, например, когда приближается запланированная перезагрузка и когда сервер выключается. Два из них - txAdmin:events:scheduledRestart и txAdmin:events:serverShuttingDown. Оба - это события на стороне сервера.
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.Смотреть скрипт →