Ir para o conteúdo principal

Ajuste do servidor Rust

Como melhorar o desempenho do servidor Rust

O desempenho do servidor é o que impede os jogadores de perder lutas por lag ou de serem lançados de penhascos por rubber-banding. Na maior parte, isso se resume a três coisas: a velocidade de clock da CPU, os plugins que você roda, e cerca de cinco convars.

  • Guias de Rust
  • Atualizado em
  • 9 min de leitura
  • Velocidade de clock da CPU
  • Sobrecarga de plugins
  • 5 convars principais
CONVARS PRINCIPAISserver.cfgbatching.colliders "0" # reative acima de 265 mil entidadesnav_disable "true" # animais e NPCs param de se moverserver.saveinterval "600"ai.think 0fps.max 30 # 30 a 100 é a faixa útil

A resposta rápida

Remova primeiro os plugins mal otimizados, porque eles custam mais do que tudo o resto combinado. Depois defina batching.colliders "0", limite o fps.max entre 30 e 100, aumente o server.saveinterval "600", e considere nav_disable "true" e ai.think 0 se você puder viver sem a movimentação dos animais.

Pontos principais

  • O Rust precisa de velocidade de clock, não de número de núcleos. As funções principais da Unity são single threaded.
  • Um único plugin mal codificado pode desfazer todas as outras otimizações desta página.
  • O FPS do servidor não é o FPS do jogador. São números diferentes medindo coisas diferentes.
  • Meça com o plugin Performance Monitor, depois remova-o. Ele também custa desempenho.
  • Cada convar aqui é uma troca. Saiba o que você está abrindo mão antes de configurá-la.

O que realmente afeta o desempenho

Um desempenho consistente é o que garante aos seus jogadores que eles têm um lugar seguro para jogar, onde não vão perder uma luta por lag nem serem lançados de uma borda de penhasco por rubber-banding. Vale a pena ser preciso sobre de onde isso vem, porque tempo gasto na coisa errada é tempo desperdiçado.

Aproximadamente em ordem de impacto:

  1. Plugins. Um único mal escrito pode dominar cada tick do servidor.
  2. Velocidade de clock da CPU. O teto sob o qual tudo o mais opera.
  3. Contagem de entidades. No fim de um ciclo de wipe, é isso que muda debaixo dos seus pés.
  4. Operações de save. Em um mundo grande, perceptíveis toda vez que acontecem.

Hardware: velocidade de clock em vez de número de núcleos

Você vai ver um desempenho de servidor dramaticamente melhor em provedores que usam CPUs mais rápidas, com clock acima de 3GHz. O motivo é arquitetural, não incidental: as funções principais da Unity são single threaded, então rodam em um único núcleo e não podem ser distribuídas entre outros. Uma CPU de 32 núcleos a 2.2GHz vai rodar um servidor Rust pior do que uma de 8 núcleos a 4GHz.

O número de núcleos não é irrelevante. Coisas como a IA de NPCs e animais, e outros objetos relacionados ao mapa, podem ser distribuídas entre múltiplos núcleos, e é por isso que servidores com mais jogadores realmente se beneficiam de núcleos extras. Um bom host deveria oferecer a opção de mais núcleos para um servidor maior, e antes de mais nada deveria estar hospedando o Rust em CPUs de alta frequência.

Essa é a coisa mais útil de checar antes de comprar. Se um host anuncia número de núcleos e RAM, mas não a velocidade de clock, geralmente é porque a velocidade de clock não é o diferencial de venda.

Plugins: o maior fator isolado

O uMod é um addon de modding para Rust que permite que servidores rodem plugins desenvolvidos majoritariamente pela comunidade. O desempenho do servidor não é afetado por plugins bem escritos e mantidos ativamente.

Mas será destruído por um ruim. Sem que você perceba, um pequeno trecho de código em qualquer um dos seus plugins pode degradar seriamente o desempenho do seu servidor, e não há nada no tamanho ou na aparente simplicidade de um plugin que indique qual é o culpado. Até o plugin mais leve e simples de aparência pode causar caos, como qualquer dono de servidor Rust experiente ou desenvolvedor de plugins vai confirmar.

Evite rodar plugins demais. A própria quantidade tem um custo, à parte da qualidade de qualquer um deles individualmente, e a resposta para um problema é, na maioria das vezes, remover um plugin em vez de adicionar outro.

Otimizando os plugins que você mantém

Alguns plugins expõem configurações de ajuste de desempenho, como timers e intervalos. Geralmente vêm desativados por padrão ou configurados de forma conservadora. Procure no arquivo de configuração do plugin e ative-os, porque um plugin que faz polling a cada tick, quando poderia fazer a cada trinta segundos, está fazendo trinta vezes mais trabalho do que precisa.

Medindo antes de mudar qualquer coisa

Chutar problemas de desempenho desperdiça tempo. Há duas medições que vale a pena fazer.

FPS do servidor

Essa é a taxa de quadros na qual o servidor está operando. Ela não tem influência direta na taxa de quadros dos seus jogadores, embora uma contagem alta de entidades em uma área afete os dois. Monitore pelo RCON com o comando FPS.

O plugin Performance Monitor

O Performance Monitor para uMod reporta informações em tempo real sobre uso de memória, tempo de hook dos plugins e outros tempos que afetam o desempenho do servidor. Ele vai mostrar qual plugin está consumindo mais tempo em um único hook, transformando "o servidor está ruim" em um nome específico.

Não deixe o Performance Monitor rodando indefinidamente. O próprio monitoramento consome recursos e vai piorar o desempenho que você está tentando medir. Instale, faça suas leituras, aja sobre elas e depois descarregue-o.

As convars que importam

Cada uma dessas é uma troca, não desempenho de graça. Os ganhos são reais, e o que você abre mão também é.

batching.colliders "0"

Elimina a necessidade de o servidor agrupar entidades. Isso é um grande ganho de desempenho: com o batching ativado, toda vez que alguém constrói algo, o servidor precisa desagrupar e depois reagrupar todas as entidades relacionadas.

A ressalva: se o seu servidor ultrapassar 265.000 entidades, você vai precisar reativá-lo para contornar o limite de entidades da Unity. No fim de um ciclo de wipe longo em um servidor movimentado, esse é um número real, não teórico, então vale a pena ficar de olho.

nav_disable "true"

Desativa a NAV mesh do seu servidor. O ganho de desempenho é grande. O custo é que animais e NPCs param de se mover completamente.

Se isso é aceitável depende do seu servidor. Em um servidor fortemente focado em PvP, onde ninguém está caçando veados, isso é quase de graça. Em um servidor PvE ou de roleplay, isso remove uma parte significativa do jogo.

ai.think 0

Você já deve ter notado, em servidores grandes, que os animais não reagem nem revidam. Isso é o ai.think definido como 0. Ele tem um efeito positivo significativo no desempenho, principalmente quando o número de jogadores é alto e eles estão frequentemente perto de animais.

server.saveinterval "600"

Você pode ver quedas de FPS no lado do servidor quando ele salva em um servidor com muitas entidades. Aumentar a duração entre os saves mantém isso no mínimo.

A troca aqui é o risco: um intervalo maior significa mais progresso perdido se o servidor travar entre um save e outro. 600 segundos é um equilíbrio razoável, mas se o seu servidor é instável por outros motivos, não corrija o sintoma tornando as quedas mais custosas.

fps.max

Controlar o FPS do seu servidor é uma boa ideia de modo geral, para impedir que ele trabalhe mais forte do que precisa sem nenhum benefício para os seus jogadores. A Facepunch já disse que os jogadores não notariam um servidor limitado a 30 quadros por segundo. É fortemente recomendado definir o fps.max para um número entre 30 e 100.

Restarts

Restarts diários podem ajudar o desempenho em servidores moddados. Processos que rodam por muito tempo acumulam pressão de memória, e plugins com vazamentos lentos são comuns o bastante para que um restart agendado seja uma garantia razoável.

Agende-os em um horário tranquilo e anuncie-os. O global.restart dá aos jogadores um aviso de 300 segundos, a cada 5 segundos, tempo suficiente para chegar a um lugar seguro. Um restart silencioso no meio de um raid vai fazer você perder mais jogadores do que o ganho de desempenho vai trazer.

O que fazer, em ordem

  1. Meça primeiro

    Verifique o FPS do servidor pelo RCON e rode o Performance Monitor brevemente. Sem uma linha de base, você não consegue saber se algo que você fez ajudou.

  2. Remova o pior plugin

    O que quer que o monitor tenha apontado. Esse é quase sempre o maior ganho isolado disponível, e é de graça.

  3. Ajuste os plugins que você mantém

    Timers e intervalos nos arquivos de configuração deles, onde existirem.

  4. Aplique as convars

    Comece com batching.colliders "0", fps.max e server.saveinterval, que não custam nada perceptível para os seus jogadores. Considere nav_disable e ai.think somente se você puder aceitar a vida selvagem estática.

  5. Meça novamente

    Mesmas ferramentas, mesmas condições, idealmente com uma contagem de jogadores parecida. Depois descarregue o monitor.

  6. Olhe para o hardware

    Se você fez tudo isso e o desempenho ainda está ruim, o teto é a CPU, e nenhuma quantidade de configuração ultrapassa isso.

Se você está nessa última etapa, nosso guia sobre o que observar ao comprar um servidor Rust cobre o que perguntar a um host antes de migrar.

Mais guias para quem administra o próprio servidor de Rust.

Respostas rápidas

Perguntas frequentes

Em ordem de impacto: um plugin mal escrito consumindo tempo de hook, uma CPU com velocidade de clock baixa, uma contagem de entidades muito alta, e operações de save em um mundo grande. Os plugins costumam ser o culpado, porque um único mal codificado pode dominar cada tick, não importa o quão bom seja o hardware.

A velocidade de clock importa mais do que o número de núcleos. As funções principais da Unity são single threaded, então uma CPU com clock acima de 3GHz faz uma diferença dramática. Núcleos adicionais ajudam com IA e trabalho relacionado ao mapa, e é por isso que servidores com mais jogadores se beneficiam de tê-los, mas uma CPU com muitos núcleos e clock baixo é o formato errado para o Rust.

Algo entre 30 e 100. A Facepunch já disse que os jogadores não vão notar um servidor limitado a 30 quadros por segundo, e deixar o servidor rodar mais forte do que precisa não traz nenhum ganho para seus jogadores. Limitá-lo libera capacidade para o trabalho que realmente afeta a jogabilidade.

Sim, significativamente, mas com um custo. Definir nav_disable "true" desativa a NAV mesh, o que gera um grande ganho de desempenho e faz com que animais e NPCs parem completamente de se mover. Se essa troca vale a pena depende inteiramente do tipo de servidor que você roda.

Ele elimina a necessidade de o servidor agrupar entidades. Isso é um grande ganho de desempenho, porque com o batching ativado o servidor precisa desagrupar e reagrupar todas as entidades relacionadas toda vez que alguém constrói algo. A ressalva é real: acima de 265.000 entidades você precisa reativá-lo para contornar o limite de entidades da Unity.

Use o plugin Performance Monitor para o uMod, que reporta o uso de memória e os tempos de hook dos plugins, e vai mostrar qual plugin está consumindo mais tempo em um único hook. Não o deixe rodando permanentemente, porque o próprio monitoramento custa desempenho.

Hospedagem Rust em hardware de alta velocidade de clock

O Rust é single threaded onde importa, e é por isso que o rodamos em CPUs de alta frequência no nosso próprio data center no Reino Unido, em vez de usar o que tiver mais núcleos.

  • Data center no Reino Unido
  • CPUs de alta frequência
  • Suporte por ticket e Discord