이 페이지는 ClickHouse Cloud에는 해당되지 않습니다. 여기에서 설명하는 절차는 ClickHouse Cloud 서비스에서 자동으로 처리됩니다.
CPU 스케일링 거버너
performance 스케일링 거버너를 사용하십시오. on-demand 스케일링 거버너는 부하가 지속적으로 높은 환경에서는 성능이 훨씬 떨어집니다.
CPU 제한 사항
dmesg를 사용하십시오.
이 제한은 데이터 센터 차원에서 외부적으로 설정될 수도 있습니다. 부하가 걸린 상태에서 이를 모니터링하려면 turbostat를 사용할 수 있습니다.
RAM
cat /proc/sys/vm/overcommit_memory의 값은 0 또는 1이어야 합니다. 다음을 실행하십시오.
perf top을 사용하세요.
영구 huge pages는 할당할 필요도 없습니다.
16GB 미만의 RAM 사용
config.xml에서 마크 캐시의 크기를 줄이십시오. 최소 500 MB까지 설정할 수 있지만 0으로는 설정할 수 없습니다.- 쿼리 처리 스레드 수를
1로 줄이십시오. max_block_size를8192로 낮추십시오.1024처럼 낮은 값도 여전히 실용적일 수 있습니다.max_download_threads를1로 낮추십시오.input_format_parallel_parsing및output_format_parallel_formatting을0으로 설정하십시오.- 로그 테이블에 대한 쓰기를 비활성화하십시오. 그렇지 않으면 백그라운드 머지 작업이 로그 테이블 머지를 수행하기 위해 RAM을 계속 예약하게 됩니다.
asynchronous_metric_log,metric_log,text_log,trace_log를 비활성화하십시오.
- 메모리 할당자에 캐시된 메모리를 플러시하려면
SYSTEM JEMALLOC PURGE명령을 실행할 수 있습니다. - 버퍼에 상당한 메모리가 필요하므로, 메모리가 적은 시스템에서는 S3 또는 Kafka 통합 사용을 권장하지 않습니다.
스토리지 서브시스템
RAID
mdadm 사용)를 사용하는 것이 더 낫습니다.
RAID-10을 구성할 때는 far 레이아웃을 선택하십시오.
예산이 허용된다면 RAID-10을 선택하십시오.
LVM 자체만으로도(RAID나 mdadm 없이) 괜찮지만, LVM으로 RAID를 구성하거나 mdadm과 함께 사용하는 방법은 충분히 검증된 선택지가 아니며 실수할 가능성도 더 큽니다
(잘못된 청크 크기 선택, 청크 정렬 불일치, 잘못된 RAID 유형 선택, 디스크 정리 누락). LVM 사용에 익숙하다면
사용을 막을 이유는 없습니다.
디스크가 4개를 초과하면 RAID-5 대신 RAID-6(권장) 또는 RAID-50을 사용하십시오.
RAID-5, RAID-6 또는 RAID-50을 사용할 때는 기본값이 대개 최선이 아니므로 항상 stripe_cache_size를 늘리십시오.
2 * num_devices * chunk_size_in_bytes / 4096.
64 KB 블록 크기는 대부분의 RAID 구성에서 충분합니다. 평균 clickhouse-server 쓰기 크기는 약 1 MB(1024 KB)이므로, 권장 stripe 크기도 1 MB입니다. 필요한 경우 블록 크기를 RAID 배열에서 패리티 디스크를 제외한 디스크 수로 1 MB를 나눈 값으로 설정해 최적화할 수 있습니다. 이렇게 하면 각 쓰기가 사용 가능한 모든 비패리티 디스크에 병렬로 분산됩니다.
블록 크기를 너무 작게 또는 너무 크게 설정하지 마십시오.
SSD에서는 RAID-0를 사용할 수 있습니다.
RAID 사용 여부와 관계없이 데이터 보안을 위해 항상 복제를 사용하십시오.
긴 큐와 함께 NCQ를 활성화하십시오. HDD에는 mq-deadline 또는 CFQ scheduler를 선택하고, SSD에는 noop를 선택하십시오. ‘readahead’ 설정은 줄이지 마십시오.
HDD에서는 쓰기 cache를 활성화하십시오.
OS에서 NVME 및 SSD 디스크에 대해 fstrim이 활성화되어 있는지 확인하십시오(일반적으로 cronjob 또는 systemd service로 구현됩니다).
파일 시스템
noatime을 설정하십시오. XFS도 잘 작동합니다.
대부분의 다른 파일 시스템도 대체로 무리 없이 사용할 수 있습니다.
하드 링크를 지원하지 않으므로 FAT-32와 exFAT는 지원되지 않습니다.
압축된 파일 시스템은 사용하지 마십시오. ClickHouse가 자체적으로 더 나은 압축을 수행하기 때문입니다.
암호화된 파일 시스템도 권장되지 않습니다. ClickHouse에서 더 나은 내장 암호화를 사용할 수 있기 때문입니다.
ClickHouse는 NFS에서도 작동할 수 있지만, 최선의 선택은 아닙니다.
Linux 커널
네트워크
Huge Pages
madvise로 설정하십시오. 구형 커널(5.9 미만)에서는 THP를 always로 설정하면 성능이 크게 저하될 수 있습니다. 특히 RAM이 64GB 이상인 시스템에서는 커널이 메모리 단편화 해소에 지나치게 많은 시간을 소모합니다. 커널 5.9에는 THP를 훨씬 더 효과적으로 처리하는 proactive compaction이 도입되었지만, THP가 always로 설정되어 있으면 ClickHouse는 시작 시 여전히 경고를 표시합니다. 따라서 커널 버전과 관계없이 권장 설정은 madvise입니다.
/etc/default/grub 파일을 편집하여 GRUB_CMDLINE_LINUX_DEFAULT 옵션에 transparent_hugepage=madvise를 추가하십시오:
sudo update-grub 명령을 실행한 후, 변경 사항을 적용하려면 재부팅하십시오.
하이퍼바이저 구성
nova.conf에서.
libvirt를 사용하는 경우 다음을 설정하십시오.
cpuid 명령어로 올바른 정보를 가져오는 데 중요합니다.
그렇지 않으면 하이퍼바이저가 오래된 CPU 모델에서 실행될 때 Illegal instruction 오류로 인해 충돌이 발생할 수 있습니다.
ClickHouse Keeper와 ZooKeeper
minSessionTimeout 설정은 변경하지 마십시오. 값을 너무 크게 설정하면 ClickHouse 재시작 안정성에 영향을 줄 수 있습니다.
기본 설정에서는 ZooKeeper가 시한폭탄과 같습니다:
기본 구성에서는 ZooKeeper 서버가 오래된 snapshots 및 logs 파일을 삭제하지 않으며(autopurge 참조), 이는 운영자의 책임입니다.
이 폭탄은 반드시 해제해야 합니다.
아래의 ZooKeeper (3.5.1) 구성은 대규모 운영 환경에서 사용됩니다:
zoo.cfg:
바이러스 백신 소프트웨어
/var/lib/clickhouse)는 검사 대상에서 제외하도록 구성하십시오. 그렇지 않으면 성능이 저하되거나 데이터 수집 및 백그라운드 머지 중 예기치 않은 오류가 발생할 수 있습니다.