Esta página no se aplica a ClickHouse Cloud. El procedimiento que se documenta aquí está automatizado en los servicios de ClickHouse Cloud.
Gobernador de escalado de la CPU
performance. El gobernador de escalado on-demand funciona mucho peor con cargas constantemente altas.
Limitaciones de la CPU
dmesg para comprobar si la frecuencia de reloj de la CPU se ha limitado debido al sobrecalentamiento.
La limitación también puede establecerse externamente a nivel del centro de datos. Puedes usar turbostat para monitorizarla bajo carga.
RAM
cat /proc/sys/vm/overcommit_memory debe ser 0 o 1. Ejecute
perf top para ver el tiempo que se dedica en el kernel a la gestión de memoria.
Tampoco hace falta asignar páginas enormes permanentes.
Uso de menos de 16 GB de RAM
- Reduzca el tamaño de la mark cache en
config.xml. Puede establecerse en tan solo 500 MB, pero no puede fijarse en cero. - Reduzca el número de hilos de procesamiento de consultas a
1. - Reduzca
max_block_sizea8192. Valores tan bajos como1024pueden seguir siendo prácticos. - Reduzca
max_download_threadsa1. - Establezca
input_format_parallel_parsingyoutput_format_parallel_formattingen0. - Desactive la escritura en las tablas de registros, ya que esto hace que la tarea de merge en segundo plano reserve RAM para realizar fusiones de tablas de registros. Desactive
asynchronous_metric_log,metric_log,text_log,trace_log.
- Para vaciar la memoria almacenada en caché por el allocator de memoria, puede ejecutar el comando
SYSTEM JEMALLOC PURGE. - No recomendamos usar integraciones de S3 o Kafka en máquinas con poca memoria, porque requieren una cantidad significativa de memoria para los búferes.
Subsistema de almacenamiento
RAID
mdadm).
Al crear RAID-10, seleccione la disposición far.
Si su presupuesto lo permite, elija RAID-10.
LVM por sí solo (sin RAID ni mdadm) está bien, pero crear RAID con él o combinarlo con mdadm es una opción menos habitual y con más probabilidades de errores
(seleccionar un tamaño de fragmento incorrecto; desalineación de fragmentos; elegir un tipo de RAID incorrecto; olvidar limpiar los discos). Si tiene experiencia
usando LVM, no hay ningún inconveniente en utilizarlo.
Si tiene más de 4 discos, use RAID-6 (preferido) o RAID-50, en lugar de RAID-5.
Al usar RAID-5, RAID-6 o RAID-50, aumente siempre stripe_cache_size, ya que el valor predeterminado normalmente no es la mejor opción.
2 * num_devices * chunk_size_in_bytes / 4096.
Un tamaño de bloque de 64 KB es suficiente para la mayoría de las configuraciones RAID. El tamaño medio de escritura de clickhouse-server es de aproximadamente 1 MB (1024 KB), y por tanto el tamaño de stripe recomendado también es de 1 MB. El tamaño de bloque puede optimizarse, si es necesario, configurándolo en 1 MB dividido entre el número de discos sin paridad de la matriz RAID, de modo que cada escritura se paralelice en todos los discos sin paridad disponibles.
Nunca establezca un tamaño de bloque demasiado pequeño ni demasiado grande.
Puede usar RAID-0 en SSD.
Independientemente de si usa RAID o no, utilice siempre replicación para proteger los datos.
Habilite NCQ con una cola larga. Para HDD, elija el planificador mq-deadline o CFQ, y para SSD, elija noop. No reduzca el ajuste de ‘readahead’.
Para HDD, habilite la caché de escritura.
Asegúrese de que fstrim esté habilitado para discos NVME y SSD en su sistema operativo (normalmente se implementa mediante un cronjob o un servicio de systemd).
Sistema de archivos
noatime. XFS también funciona bien.
La mayoría de los demás sistemas de archivos también deberían funcionar sin problemas.
FAT-32 y exFAT no son compatibles por la falta de enlaces duros.
No use sistemas de archivos comprimidos, porque ClickHouse se encarga de la compresión por sí solo y lo hace mejor.
No se recomienda usar sistemas de archivos cifrados, porque puede usar el cifrado integrado de ClickHouse, que es mejor.
Aunque ClickHouse puede funcionar sobre NFS, no es la mejor opción.
Kernel de Linux
Red
Páginas enormes
madvise. En kernels más antiguos (anteriores a la versión 5.9), configurar THP en always puede provocar una degradación importante del rendimiento: el kernel dedica demasiado tiempo a la desfragmentación de memoria, especialmente en sistemas con 64 GB o más de RAM. El kernel 5.9 introdujo la compactación proactiva, que gestiona mucho mejor THP, pero ClickHouse sigue mostrando una advertencia al iniciar si THP está configurado en always, por lo que madvise sigue siendo la configuración recomendada, independientemente de la versión del kernel.
/etc/default/grub para añadir transparent_hugepage=madvise a la opción GRUB_CMDLINE_LINUX_DEFAULT:
sudo update-grub y luego reinicie para que los cambios surtan efecto.
Configuración del hipervisor
nova.conf.
Si usa libvirt, establezca
cpuid.
De lo contrario, pueden producirse fallos de tipo Illegal instruction cuando el hipervisor se ejecute en modelos de CPU antiguos.
ClickHouse Keeper y ZooKeeper
minSessionTimeout; los valores altos pueden afectar la estabilidad de los reinicios de ClickHouse.
Con la configuración predeterminada, ZooKeeper es una bomba de relojería:
El servidor ZooKeeper no eliminará archivos de snapshots y logs antiguos cuando se use la configuración predeterminada (consulte autopurge), y esto es responsabilidad del operador.
Esta bomba debe desactivarse.
La siguiente configuración de ZooKeeper (3.5.1) se utiliza en un gran entorno de producción:
zoo.cfg:
Software antivirus
/var/lib/clickhouse); de lo contrario, el rendimiento puede verse afectado y pueden producirse errores inesperados durante la ingestión de datos y las fusiones en segundo plano.