Reinicializações agendadas do txAdmin: defina uma reinicialização diária com avisos
Configure reinicializações automáticas no txAdmin: a programação de reinicialização, anúncios antes de reiniciar, por que reinicializações diárias ajudam e como salvar dados do jogador quando o servidor desliga.
Um servidor FiveM que funciona por dias lentamente piora: a memória cresce, scripts deixam entidades para trás, e hitches ficam mais comuns. Uma reinicialização agendada a uma hora fixa é a correção mais barata. txAdmin tem isso integrado, com avisos aos jogadores para que ninguém fique surpreso.
Por que as reinicializações diárias ajudam
- Memória. Alguns recursos continuam adicionando a tabelas ou entidades que nunca limpam. Uma reinicialização retorna o servidor a um estado fresco.
- Estado preso. Entidades deixadas para trás, sessões quebradas e scripts em um estado ruim desaparecem.
- Previsibilidade. Os jogadores aprendem que o servidor desce às, digamos, 05:00 e planejam para isso.
- Atualizações. Você tem um ponto regular para aplicar atualizações de script e novos artefatos. Veja atualizando artefatos do servidor.
Uma reinicialização esconde um vazamento, não o corrige. Se o servidor está claramente mais lento após algumas horas, encontre a causa com resmon.
Defina a programação no txAdmin
- Abra o painel web do txAdmin e vá para Configurações.
- Encontre a seção Restarter (reinicializações agendadas).
- Adicione as horas do dia em que deseja uma reinicialização, no formato mostrado, por exemplo
05:00. Você pode adicionar mais de uma. - Salve.
O layout exato varia por versão, então procure pela seção de programação de reinicialização. Os horários seguem o relógio da máquina que executa txAdmin, então verifique seu fuso horário se a reinicialização acontecer na hora errada.
Escolha a hora mais tranquila do seu servidor. Verifique seu gráfico de jogador antes de escolher.
Avisos antes da reinicialização
txAdmin anuncia reinicializações próximas aos jogadores no jogo, com uma contagem regressiva. Você não precisa escrever um script para isso. Quando uma reinicialização é agendada, os jogadores recebem mensagens nos minutos anteriores, e a mensagem final quando ela começa.
Você também pode reiniciar manualmente do painel a qualquer momento e dar uma razão. A mensagem é mostrada aos jogadores primeiro.
Dica: diga aos seus jogadores as horas de reinicialização no seu Discord e na sua tela de carregamento. Poucos se importarão com uma reinicialização que foram informados sobre.
Salve dados do jogador no desligamento
O risco de uma reinicialização é progresso perdido. Pense nisso como três camadas:
- O framework salva personagens periodicamente e quando um jogador desconecta (
playerDropped). ESX, QBCore e QBox todos fazem isso. Quando txAdmin para o servidor, os jogadores são desconectados, o que dispara aqueles salvamentos em condições normais. - Seus scripts devem manter seus próprios dados no banco de dados conforme mudam, ou em um timer. Não mantenha progresso apenas em uma tabela Lua e escreva no desligamento.
- Hooks de desligamento são uma última chance, não um plano. Um servidor que é morto ou crashes nunca os executa.
txAdmin envia eventos para seus recursos que você pode usar, por exemplo, quando uma reinicialização agendada está vindo e quando o servidor está desligando. Dois deles são txAdmin:events:scheduledRestart e txAdmin:events:serverShuttingDown. Ambos são eventos do lado do servidor.
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)A verificação GetInvokingResource() garante que o evento venha do txAdmin (seu recurso é chamado monitor) e não de um jogador ou outro script. Verifique a documentação do txAdmin para a lista completa de campos de dados de eventos em sua versão.
SaveAllMyData representa sua própria função que escreve o estado do seu script no banco de dados. Mantenha-a rápida: o servidor não espera para sempre.
Dicas práticas
- Reinicie com menos frequência do que você acha que precisa, mas não nunca. Uma vez por dia funciona para a maioria dos servidores. Servidores pesados fazem duas vezes.
- Faça backup antes da reinicialização. Um dump de banco de dados agendado alguns minutos antes significa que você sempre pode voltar. Veja fazendo backup do seu servidor.
- Observe o primeiro início após uma reinicialização. Se um script falhar ao iniciar, você quer saber antes que os jogadores entrem. Verifique o console do txAdmin.
- Use ordem de recurso. Scripts que precisam de um banco de dados ou core devem iniciar depois deles. Veja ordem de recurso do server.cfg.
- Não reinicie durante eventos. Se você executar um evento agendado, mova a reinicialização ou faça-o à mão depois.
O que uma reinicialização não corrige
Se o servidor hitches ou lags desde o momento em que inicia, o problema é um script, não o tempo de atividade. Verifique avisos de hitch de thread do servidor e resmon. Uma programação apenas trata o construção lenta.
Lista de verificação
| Sintoma | Solução |
|---|---|
| O servidor fica lento após horas | Adicione uma reinicialização diária, depois encontre o script que vaza |
| Reinicialização na hora errada | Verifique o fuso horário da máquina que executa txAdmin |
| Jogadores surpresos pela reinicialização | Use anúncios do txAdmin e publique os horários de reinicialização |
| Progresso perdido na reinicialização | Salve no banco de dados conforme os dados mudam, não apenas no desligamento |
| Precisa de um último salvamento | Manipule txAdmin:events:serverShuttingDown e verifique GetInvokingResource() |
| Reinicialização quebra scripts | Corrija a ordem de início e leia o console após a reinicialização |
Respostas rápidas
Com que frequência um servidor FiveM deve reinicializar?
A maioria dos servidores reinicia uma ou duas vezes por dia, na hora mais tranquila. Se você vir o desempenho cair durante o dia, reinicie com mais frequência e procure pelo script que o causa.
Os jogadores perderão progresso em uma reinicialização?
Não, se seu framework e scripts salvarem adequadamente. Os frameworks salvam jogadores periodicamente e quando caem, e seus próprios scripts devem também salvar em um timer, não apenas no desligamento.
Onde defino as horas de reinicialização?
No painel de configurações web do txAdmin, na seção de restarter. Você adiciona as horas do dia, e txAdmin mostra os avisos aos jogadores antes de cada uma.
Scripts sem esse problema
Crypto MiningCompre um galpão, monte rigs peça por peça e minere moedas num mercado que se mexe.Ver script →
Arcade MachinesSete jogos de fliperama jogáveis em máquinas de verdade, com rankings e apostas.Ver script →
Tebex TemplateUm tema premium para sua loja Tebex, sem código e editado todo pelo painel da Tebex.Ver script →