لا تسري هذه الصفحة على ClickHouse Cloud. ويُنفَّذ الإجراء الموضَّح هنا تلقائيًا في خدمات ClickHouse Cloud.
متحكّم تحجيم CPU
performance. إذ يعمل متحكّم التحجيم on-demand بكفاءة أقل بكثير عند وجود طلب مرتفع ومستمر.
قيود CPU
dmesg لمعرفة ما إذا كان تردد CPU قد قُيِّد بسبب ارتفاع الحرارة.
يمكن أيضًا فرض هذا القيد خارجيًا على مستوى مركز البيانات. يمكنك استخدام turbostat لمراقبته أثناء التعرّض لحمل.
RAM
cat /proc/sys/vm/overcommit_memory هي 0 أو 1. نفّذ
perf top لمراقبة الوقت المُستغرَق في النواة لإدارة الذاكرة.
كما أن الصفحات الضخمة الدائمة لا تحتاج أيضًا إلى تخصيص.
استخدام أقل من 16GB من RAM
- خفّض حجم mark cache في
config.xml. يمكن ضبطه حتى 500 MB، لكن لا يمكن ضبطه على الصفر. - خفّض عدد خيوط معالجة الاستعلامات إلى
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) خيارًا مقبولًا، لكن إنشاء RAID باستخدامه أو دمجه مع mdadm خيار أقل شيوعًا، وتزداد معه احتمالات وقوع أخطاء
(مثل اختيار حجم chunk غير صحيح؛ أو عدم محاذاة chunks؛ أو اختيار نوع RAID غير صحيح؛ أو نسيان تنظيف الأقراص). إذا كنت واثقًا
من استخدام LVM، فلا مانع من استخدامه.
إذا كان لديك أكثر من 4 أقراص، فاستخدم RAID-6 (وهو الخيار المفضّل) أو RAID-50 بدلًا من RAID-5.
عند استخدام 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)، لذلك فإن حجم الشريط الموصى به هو أيضًا 1 MB. ويمكن تحسين حجم الكتلة عند الحاجة بضبطه على 1 MB مقسومًا على عدد أقراص عدم التكافؤ في مصفوفة RAID، بحيث تُوزَّع كل عملية كتابة بالتوازي على جميع أقراص عدم التكافؤ المتاحة.
لا تضبط حجم الكتلة أبدًا على قيمة صغيرة جدًا أو كبيرة جدًا.
يمكنك استخدام RAID-0 على SSD.
وبغض النظر عن استخدام RAID، استخدم دائمًا النسخ المتماثل لضمان أمن البيانات.
فعّل NCQ مع قائمة انتظار طويلة. بالنسبة إلى HDD، اختر المجدول mq-deadline أو CFQ، وبالنسبة إلى SSD، اختر noop. لا تقلّل إعداد ‘readahead’.
بالنسبة إلى HDD، فعّل ذاكرة التخزين المؤقت للكتابة.
تأكّد من أن fstrim مفعّل لأقراص NVME وSSD في نظام التشغيل لديك (وعادةً ما يُنفَّذ باستخدام مهمة cron أو خدمة systemd).
نظام الملفات
noatime. كما أن XFS يعمل جيدًا أيضًا.
وينبغي أن تعمل معظم أنظمة الملفات الأخرى دون مشكلة.
لا يدعم FAT-32 وexFAT بسبب عدم دعم الروابط الصلبة.
لا تستخدم أنظمة الملفات المضغوطة، لأن ClickHouse يتولى الضغط بنفسه وبشكل أفضل.
كما لا يُنصح باستخدام أنظمة الملفات المشفرة، لأن بإمكانك استخدام التشفير المدمج في ClickHouse، وهو أفضل.
ومع أن ClickHouse يمكنه العمل عبر NFS، فإن ذلك ليس الخيار الأفضل.
نواة Linux
الشبكة
الصفحات الضخمة
madvise. في الأنوية الأقدم (قبل الإصدار 5.9)، قد يؤدي ضبط THP على always إلى تراجع كبير في الأداء، إذ تقضي النواة وقتًا مفرطًا في إلغاء تجزئة الذاكرة، خاصةً على الأنظمة التي تحتوي على 64 غيغابايت أو أكثر من RAM. وقد قدّم الإصدار 5.9 من النواة آلية compaction استباقية تتعامل مع THP بكفاءة أفضل بكثير، لكن ClickHouse لا يزال يعرض تحذيرًا عند بدء التشغيل إذا كان THP مضبوطًا على always، لذا يظل madvise هو الإعداد الموصى به بغض النظر عن إصدار النواة.
/etc/default/grub لإضافة transparent_hugepage=madvise إلى الخيار GRUB_CMDLINE_LINUX_DEFAULT:
sudo update-grub ثم أعد التشغيل حتى تسري التغييرات.
إعدادات الهايبرفايزر
nova.conf.
إذا كنت تستخدم libvirt، فعيّن
cpuid.
وإلا فقد تواجه أعطال Illegal instruction عند تشغيل هايبرفايزر على طُرز CPU قديمة.
ClickHouse Keeper وZooKeeper
minSessionTimeout، إذ قد تؤثر القيم الكبيرة في استقرار إعادة تشغيل ClickHouse.
مع الإعدادات الافتراضية، فإن ZooKeeper أشبه بقنبلة موقوتة:
لن يحذف خادم ZooKeeper الملفات من اللقطات والسجلات القديمة عند استخدام الإعدادات الافتراضية (انظر autopurge)، وتقع هذه المسؤولية على عاتق المسؤول عن التشغيل.
يجب إبطال مفعول هذه القنبلة.
يُستخدم إعداد ZooKeeper (3.5.1) أدناه في بيئة إنتاج كبيرة:
zoo.cfg:
برامج مكافحة الفيروسات
/var/lib/clickhouse)، وإلا فقد يتراجع الأداء وقد تواجه أخطاء غير متوقعة أثناء إدخال البيانات وعمليات الدمج في الخلفية.