Esta página não se aplica ao ClickHouse Cloud. O procedimento descrito aqui é automatizado nos serviços do ClickHouse Cloud.
Governador de escalonamento da CPU
performance. O governador on-demand funciona muito pior sob carga constantemente alta.
Limitações da CPU
dmesg para verificar se a frequência de clock da CPU foi reduzida devido ao superaquecimento.
A limitação também pode ser imposta externamente no nível do datacenter. Você pode usar turbostat para monitorá-la sob carga.
RAM
cat /proc/sys/vm/overcommit_memory deve ser 0 ou 1. Execute
perf top para observar o tempo gasto no kernel com o gerenciamento de memória.
As huge pages permanentes também não precisam ser alocadas.
Usando menos de 16 GB de RAM
- Reduza o tamanho do mark cache no
config.xml. Ele pode ser configurado para apenas 500 MB, mas não pode ser definido como zero. - Reduza o número de threads de processamento de consultas para
1. - Reduza o
max_block_sizepara8192. Valores tão baixos quanto1024ainda podem ser viáveis. - Reduza
max_download_threadspara1. - Defina
input_format_parallel_parsingeoutput_format_parallel_formattingcomo0. - desative a gravação em log tables, pois isso faz com que a tarefa de mesclagem em segundo plano reserve RAM para executar mesclagens de log tables. Desative
asynchronous_metric_log,metric_log,text_log,trace_log.
- Para liberar a memória armazenada em cache pelo allocator de memória, você pode executar o comando
SYSTEM JEMALLOC PURGE. - Não recomendamos usar integrações com S3 ou Kafka em máquinas com pouca memória, porque elas exigem uma quantidade significativa de memória para buffers.
Subsistema de armazenamento
RAID
mdadm).
Ao criar um RAID-10, selecione o layout far.
Se o orçamento permitir, escolha RAID-10.
O LVM por si só (sem RAID ou mdadm) é aceitável, mas criar um RAID com ele ou combiná-lo com o mdadm é uma opção menos testada e com maior chance de erros
(selecionar o tamanho de chunk errado; desalinhamento dos chunks; escolher o tipo de RAID errado; esquecer de limpar os discos). Se você tem segurança
ao usar LVM, não há problema em usá-lo.
Se você tiver mais de 4 discos, use RAID-6 (preferencialmente) ou RAID-50, em vez de RAID-5.
Ao usar RAID-5, RAID-6 ou RAID-50, sempre aumente stripe_cache_size, já que o valor padrão geralmente não é a melhor opção.
2 * num_devices * chunk_size_in_bytes / 4096.
Um tamanho de bloco de 64 KB é suficiente para a maioria das configurações de RAID. O tamanho médio de gravação do clickhouse-server é de aproximadamente 1 MB (1024 KB) e, portanto, o tamanho de stripe recomendado também é de 1 MB. Se necessário, o tamanho do bloco pode ser otimizado definindo-o como 1 MB dividido pelo número de discos sem paridade no array RAID, de modo que cada gravação seja paralelizada em todos os discos sem paridade disponíveis.
Nunca defina o tamanho do bloco como muito pequeno nem muito grande.
Você pode usar RAID-0 em SSD.
Independentemente do uso de RAID, sempre use replicação para garantir a segurança dos dados.
Habilite NCQ com uma fila longa. Para HDD, escolha o scheduler mq-deadline ou CFQ e, para SSD, escolha noop. Não reduza a configuração de ‘readahead’.
Para HDD, habilite o cache de gravação.
Certifique-se de que fstrim esteja habilitado para discos NVME e SSD no seu sistema operacional (geralmente isso é implementado usando um cronjob ou serviço do systemd).
Sistema de arquivos
noatime nas opções de montagem. O XFS também funciona bem.
A maioria dos outros sistemas de arquivos também deve funcionar sem problemas.
FAT-32 e exFAT não são compatíveis devido à falta de hard links.
Não use sistemas de arquivos comprimidos, porque o ClickHouse faz a própria compressão, e melhor.
Não é recomendável usar sistemas de arquivos criptografados, porque você pode usar a criptografia nativa do ClickHouse, que é superior.
Embora o ClickHouse possa funcionar com NFS, essa não é a melhor opção.
Kernel do Linux
Rede
Huge Pages
transparent huge pages como madvise. Em kernels mais antigos (anteriores ao 5.9), THP configurado como always pode causar uma degradação significativa de desempenho — o kernel gasta tempo demais com a desfragmentação da memória, especialmente em sistemas com 64 GB+ de RAM. O kernel 5.9 introduziu a compactação proativa, que lida muito melhor com THP, mas o ClickHouse ainda exibe um aviso na inicialização se THP estiver configurado como always, portanto madvise é a configuração recomendada independentemente da versão do kernel.
/etc/default/grub para adicionar transparent_hugepage=madvise à opção GRUB_CMDLINE_LINUX_DEFAULT:
sudo update-grub e reinicie o sistema para que a alteração entre em vigor.
Configuração do hipervisor
nova.conf.
Se estiver usando libvirt, defina
cpuid.
Caso contrário, você poderá ter falhas de Illegal instruction quando o hipervisor estiver em execução em modelos de CPU antigos.
ClickHouse Keeper and ZooKeeper
minSessionTimeout; valores altos podem afetar a estabilidade do ClickHouse ao reiniciar.
Com as configurações padrão, o ZooKeeper é uma bomba-relógio:
O servidor ZooKeeper não excluirá arquivos de snapshots e logs antigos ao usar a configuração padrão (consulte autopurge), e isso é responsabilidade do operador.
Essa bomba deve ser desarmada.
A configuração do ZooKeeper (3.5.1) abaixo é usada em um grande ambiente de produção:
zoo.cfg:
Software antivírus
/var/lib/clickhouse); caso contrário, o desempenho poderá ser reduzido e você poderá encontrar erros inesperados durante a ingestão de dados e as mesclagens em segundo plano.