mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-19 22:22:00 +00:00
142 lines
8.9 KiB
ReStructuredText
142 lines
8.9 KiB
ReStructuredText
Советы по эксплуатации
|
||
======================
|
||
|
||
Процессор
|
||
---------
|
||
|
||
Требуется поддержка набора инструкций SSE 4.2. Современные процессоры (с 2008 года) его поддерживают.
|
||
|
||
При выборе между процессорами с большим числом ядер с немного меньшей тактовой частотой и процессором с меньшим числом ядер с высокой тактовой частотой, первый вариант более предпочтителен.
|
||
Например, 16 ядер с 2600 MHz лучше, чем 8 ядер 3600 MHz.
|
||
|
||
Hyper-Threading
|
||
---------------
|
||
|
||
Hyper-threading лучше не отключать. Некоторые запросам он помогает, а некоторым — нет.
|
||
|
||
|
||
Turbo-Boost
|
||
-----------
|
||
|
||
Turbo-Boost крайне не рекомендуется отключать. При типичной нагрузке он значительно улучшает производительность.
|
||
Можно использовать ``turbostat`` для просмотра реальной тактовой частоты процессора под нагрузкой.
|
||
|
||
|
||
CPU scaling governor
|
||
--------------------
|
||
|
||
Нужно всегда использовать ``performance`` scaling governor. ``ondemand`` scaling governor работает намного хуже при постоянно высоком спросе.
|
||
|
||
.. code-block:: bash
|
||
|
||
sudo echo 'performance' | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
|
||
|
||
|
||
Ограничение CPU
|
||
---------------
|
||
Процессоры могут перегреваться. С помощью ``dmesg`` можно увидеть, если тактовая частота процессора была ограничена из-за перегрева.
|
||
Также ограничение может устанавливаться снаружи на уровне датацентра. С помощью ``turbostat`` можно за этим наблюдать под нагрузкой.
|
||
|
||
|
||
Оперативная память
|
||
------------------
|
||
|
||
Для небольших объемов данных (до ~200 Гб в сжатом виде) лучше всего использовать столько памяти не меньше, чем объем данных.
|
||
Для больших объемов данных, при выполнении интерактивных (онлайн) запросов, стоит использовать разумный объем оперативной памяти (128 Гб или более) для того, чтобы горячее подмножество данных поместилось в кеше страниц.
|
||
Даже для объемов данных в ~50 Тб на сервер, использование 128 Гб оперативной памяти намного лучше для производительности выполнения запросов, чем 64 Гб.
|
||
|
||
|
||
Файл подкачки
|
||
-------------
|
||
|
||
Всегда отключайте файл подкачки. Единственной причиной этого не делать может быть только использование ClickHouse на личном ноутбуке.
|
||
|
||
|
||
Huge pages
|
||
----------
|
||
|
||
Механизм прозрачных huge pages нужно отключить. Он мешает работе аллокаторов памяти, что приводит к значительной деградации производительности.
|
||
|
||
.. code-block:: bash
|
||
|
||
echo 'never' | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
|
||
|
||
С помощью ``perf top`` можно наблюдать за временем, проведенном в ядре операционной системы для управления памятью.
|
||
Постоянные huge pages так же не нужно аллоцировать.
|
||
|
||
|
||
Подсистема хранения
|
||
-------------------
|
||
|
||
Если ваш бюджет позволяет использовать SSD, используйте SSD.
|
||
В противном случае используйте HDD. SATA HDDs 7200 RPM подойдут.
|
||
|
||
Предпочитайте много серверов с локальными жесткими дисками вместо меньшего числа серверов с подключенными дисковыми полками.
|
||
Но для хранения архивов с редкими запросами полки всё же подходят.
|
||
|
||
|
||
RAID
|
||
----
|
||
|
||
При использовании HDD можно объединить их RAID-10, RAID-5, RAID-6 или RAID-50.
|
||
Лучше использовать программный RAID в Linux (``mdadm``). Лучше не использовать LVM.
|
||
При создании RAID-10, нужно выбрать ``far`` расположение.
|
||
Если бюджет позволяет, лучше выбрать RAID-10.
|
||
|
||
На более чем 4 дисках вместо RAID-5 нужно использовать RAID-6 (предпочтительнее) или RAID-50.
|
||
При использовании RAID-5, RAID-6 или RAID-50, нужно всегда увеличивать stripe_cache_size, так как значение по умолчанию выбрано не самым удачным образом.
|
||
|
||
.. code-block:: bash
|
||
|
||
echo 4096 | sudo tee /sys/block/md2/md/stripe_cache_size
|
||
|
||
Точное число стоит вычислять из числа устройств и размер блока по формуле: ``2 * num_devices * chunk_size_in_bytes / 4096``.
|
||
|
||
Размер блока в 1024 Кб подходит для всех конфигураций RAID.
|
||
Никогда не указывайте слишком маленький или слишком большой размер блока.
|
||
|
||
|
||
На SSD можно использовать RAID-0.
|
||
Вне зависимости от использования RAID, всегда используйте репликацию для безопасности данных.
|
||
|
||
Включите NCQ с длинной очередью. Для HDD стоит выбрать планировщик CFQ, а для SSD — noop. Не стоит уменьшать настройку readahead.
|
||
На HDD стоит включать write ahread.
|
||
|
||
|
||
Файловая система
|
||
----------------
|
||
|
||
Ext4 — самый проверенный вариант, стоит указывать опции монтирования ``noatime,nobarrier``.
|
||
XFS также подходит, но не так тщательно протестирована в сочитании с ClickHouse.
|
||
Большинство других файловых систем также должны нормально работать. Файловые системы с отложенной аллокацией работают лучше.
|
||
|
||
|
||
Ядро Linux
|
||
----------
|
||
|
||
Не используйте слишком старое ядро Linux. В 2015 году 3.18.19 — достаточно свежее.
|
||
Рассмотрите возможность использования сборки ядра от Яндекса: https://github.com/yandex/smart — это дает прирост в производительности не менее 5%.
|
||
|
||
|
||
Сеть
|
||
----
|
||
|
||
При использовании IPv6, стоит увеличить размер кеша маршрутов.
|
||
Ядра Linux до 3.2 имели массу проблем в реализации IPv6.
|
||
|
||
Предпочитайте как минимум 10 Гбит сеть. 1 Гбит также будет работать, но намного хуже для починки реплик с десятками терабайт данных или для обработки распределенных запросов с большим объемом промежуточных данных.
|
||
|
||
|
||
ZooKeeper
|
||
---------
|
||
|
||
Вероятно вы уже используете ZooKeeper для других целей. Можно использовать ту же инсталляцию ZooKeeper, если она не сильно перегружена.
|
||
|
||
Лучше использовать свежую версию ZooKeeper, как минимум 3.5. Версия в стабильных дистрибутивах Linux может быть устаревшей.
|
||
|
||
С настройками по умолчанию, ZooKeeper является бомбой замедленного действия:
|
||
|
||
Сервер ZooKeeper не будет удалять файлы со старыми снепшоты и логами при использовании конфигурации по умолчанию (см. autopurge), это является ответственностью оператора.
|
||
|
||
Эту бомбу нужно обезвредить.
|