Servidor de hospedagem não tem memória sobrando: se o backup pegar demais, quem sofre são os sites, ou o próprio backup morre no meio. Quanto o próprio motor de backup envia ao storage, e quanto ganha lendo vários arquivos em paralelo? E quanta memória o primeiro backup de 4 contas consome quando elas rodam ao mesmo tempo?
Por que isso importa para quem administra o servidor
- Velocidade: lendo um arquivo por núcleo, o motor envia 141 MB/s, contra 60 MB/s lendo um por vez. Menos tempo de backup é menos tempo dividindo o servidor com os sites.
- Memória: 4 contas juntas no primeiro backup usaram 2,4 GB no pico, cerca de 600 MB por conta. Por isso, num servidor de 11 GB sem swap, o padrão começa com 2 contas ao mesmo tempo: o admin sabe de antemão quanto o backup vai pegar.
Ver os dados em tabela
| Arquivos lidos em paralelo | Tempo | Velocidade |
|---|---|---|
| 1 | 68 s | 60 MB/s |
| 4 | 35 s | 117 MB/s |
| 18 (padrão: 1 por núcleo) | 29 s | 141 MB/s |
Método
Servidor cPanel de testes (18 núcleos, 23 GB de memória) enviando a um storage de backup com ZFS na rede interna, por SFTP. O motor usa uma conexão SSH e manda vários pedidos dentro dela. Prioridade baixa.
Envio: 4 GB de dados aleatórios, sem compressão, com a origem já na memória do sistema.
Memória: 4 contas reais de 1 a 2,5 GB (de 17 mil a 44 mil arquivos cada, 6,8 GB no total), primeiro backup, zstd-fastest, um repositório por conta, as 4 ao mesmo tempo. A maior levou 25 s; a carga do servidor chegou a 16, com 18 núcleos.
O que decidimos
O padrão do motor, uma leitura por núcleo, é o mais rápido: fica. Num servidor de produção com 11 GB de memória e sem swap, o primeiro backup começa com 2 contas em paralelo (cerca de 1,2 GB), e só sobe depois de medir lá.