找回密码
 注册
查看: 41|回复: 3

ClickHouse内存配置参数调整优化

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2024-11-18 10:21:32 | 显示全部楼层 |阅读模式
遇到问题,使用内存和cpu超高,只能调整内存使用率来降低cpu负载的问题。
7 U! b! o; _  Z/ n, K0 p8 s2 y1 ~3 q( A: ^
2 t, ^3 X1 O9 I: t6 p& S. \

. I& O) ]& n8 w% V5 O* V* \
$ r/ p; r4 M& d% K3 S/ ], b7 v$ o1.max_memory_usage2 H- U2 ^6 D% _: K) _& x
运行单个查询时使用的最大内存量。
1 j8 a- U. s  L5 Z默认设置为无限(设置为 0)。
9 P6 b/ _4 `6 V0 `9 a8 ]该设置不考虑可用内存容量或机器上的内存总量。该限制适用于单个服务器中的单个查询。你可以使用SHOW PROCESSLIST查看每个查询的当前内存消耗。此外,每次查询的内存消耗峰值都会被跟踪并写入日志。
; i5 G) ]7 V8 ?& @# S某些聚合函数的状态不会受到内存使用情况的监控。  r6 i7 i4 F0 B+ A- f% G8 n
对于来自字符串和数组参数的聚合函数min、max、any、anyLast、argMin、argMax的状态,不完全跟踪他们对内存的使用情况。
. N9 Q' Q( \( V. _3 [" ]内存消耗还受到 max_memory_usage_for_user 和 max_server_memory_usage 参数的限制。' z  l; Q5 V& s

4 g% [  v4 [! \; N ! _# n, R6 H7 F$ t5 V
' E# x0 c9 n8 c7 n7 d4 `2 a, W
2.max_memory_usage_for_user
* m  h+ |5 ~; j2 r在单个服务器上运行用户查询时使用的最大内存容量。
. h- C* W* S$ Z1 |/ y8 U$ |+ z6 f默认值在Settings.h中定义。默认情况下,该值不受限制(max_memory_usage_for_user = 0)。& o2 B! f1 b" l

2 U4 |" O  K% Q) v3 e
2 z* v' k5 g4 S8 N. B
1 R0 r  I* Z: Y+ a5 ]# I9 ~9 P2 W3.max_server_memory_usage4 v% h. n- b/ \, s
内存使用总量限制。零表示无限制。1 g0 d) d- W* y* j+ m. y7 \. k
默认的 max_server_memory_usage 值计算公式为:memory_amount * max_server_memory_usage_to_ram_ratio。
! ?0 s" k9 L: g7 o; O/ q/ ]
% D! W3 z) w8 y0 N5 c
4 E! y3 z5 J5 ]+ v8 b# Q, N; ]# s
( }% C  E( }, H; `4.max_server_memory_usage_to_ram_ratio. K" Y  f3 G6 V8 A
与 max_server_memory_usage 相同,但与物理内存成比例。允许降低低内存系统的内存使用率。零表示无限制。
& g5 e# B- E5 W' m% e7 i' E& f1 a6 l' e在内存和交换容量较小的主机上,可能需要将 max_server_memory_usage_to_ram_ratio 设置得大于 1。0 表示可以使用所有可用内存。0 G' s  D1 G. M! S* w
默认配置:! E+ a' ?2 j' p) b0 d+ s4 K
2 e+ V/ a8 j6 t& d; i
8 i$ U* {& U( `9 v( s7 |
<max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio>
! a5 l8 @& B6 t  S4 F
1 r; c* o6 y( r2 d; ?9 g2 @9 p( h/ @8 |+ T# S8 z( N) D+ T
5.max_memory_usage_for_all_queries+ t% }! p% e6 k
默认值是0,即不限制对内存的使用。1 u) Z  b$ l- M, \

* f# x' O& _; R8 }7 l/ l- v( F( `* X6 H9 E- ?/ n
内存配置的官方建议& H. u: k% s$ [! f
5 I  I4 R4 t5 `# ]
  k6 U* Q" j4 J% ~
https://clickhouse.com/docs/en/operations/tips0 E) N; q  T" W& f3 u- y
对于少量数据(压缩后不超过 ~200 GB),最好使用与数据量相同的内存。对于大数据量和处理交互式(在线)查询时,应使用合理的内存容量(128 GB 或更多),这样热数据子集才能放入页面缓存。即使每台服务器的数据量为 ~50 TB,使用 128 GB 内存也比使用 64 GB 内存能显著提高查询性能。6 b& M: A- w# A

, N7 t2 _! K8 j; B; W不要禁用overcommit。  ?+ E4 n! P- }  t' L; i

5 _9 x0 y! @! G$ ~5 e+ N  f( z/ o
$ cat /proc/sys/vm/overcommit_memory 的值应为0或1
: S5 Y: G. R1 V" O; p运行# R$ {) ~- @* e4 S8 H$ A

+ a1 c. Z& f9 F7 F; X
0 N5 s1 U' L# M+ D8 p$ echo 0 | sudo tee /proc/sys/vm/overcommit_memory
( d' r+ x% R6 Z& C2 }  {如果系统内存不足 16GB,可能会出现各种内存异常,因为默认设置与内存容量不匹配。建议内存容量为 32GB 或更大。
% m& Z/ {7 `4 d# r3 V- r: o2 h/ l/ Z+ V, q

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-18 10:28:12 | 显示全部楼层

) r9 k) z4 o: v+ \3 @. q# vim /etc/clickhouse-server/config.xml
$ A" I4 `+ F! O. {9 `6 q在这个; s3 H$ b9 X2 U0 G) i- k* p
<yandex>$ ]6 M3 p& ]  i4 f. }: p
</yandex>, `* m: t; n6 r' w7 n
标签里配置:
- r4 \  g% \$ T- U6 l
% _2 ^8 \+ @, E. I* E例如:4 W$ r) |4 K- ^6 {; C+ C1 Y
<yandex># k9 s, }. n$ d- s) I3 W' {" a
        <!其他配置项 >
$ M" W) b+ F# a$ Z% q  `; D, P    <profiles>/ l3 }1 A7 g" E  l1 V  |+ W0 z
        <default>
2 |; w, H8 X% w5 T6 m! L0 g7 I: o            <max_memory_usage>8G</max_memory_usage>
  l. S- h, Q7 c1 \- p        </default>
% m) r. O% \; N6 U& q! ?  W; y    </profiles>
- y# r% u, A3 B( C    <!其他配置项 >
0 j2 S% B6 j6 W5 Z</yandex>

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-18 10:30:34 | 显示全部楼层
默认内存设置  y: A6 i$ Z# N8 O4 G) A

" n5 q9 W* |; C0 o% HClickHouse默认为每个客户端分配8i(即8MB)的内存,而服务器总内存限制则为10g(即10GB),这意味着无论查询复杂性如何,每个客户端连接最多只能使用8MB的内存,而整个ClickHouse服务可用的内存总量被限制在10GB以内,这种设置在大多数情况下可以防止内存溢出,但在某些高负载或大数据分析场景下可能会限制性能。
* ^- Q- r/ P/ V) a# r5 d' A+ P. q' q( r
" T  k) E  q4 V: x$ k$ o) {# p* J修改内存限制
' M3 M  C$ Y+ L) q( c( L$ T* u0 z4 x. J: q
1. 配置文件修改  B- l7 k/ `) T3 A7 e3 B: B/ x

) W8 M1 B+ T, m& B  z" {) |- t要修改ClickHouse的服务级别内存限制,首先需要编辑其配置文件,通常这个文件位于/etc/clickhouseserver/config.xml,您可以使用文本编辑器打开此文件:/ Z9 _- L7 }! W' ~4 B9 C

% \- Q: X' _) A- }客户端8i 服务器10g_修改ClickHouse服务级别内存限制
* e1 [( A$ N9 a& m1 q. S(图片来源网络,侵删)
- q7 Z  E, `+ V4 h  R<yandex>. q7 d& P! K; l
    <!其他配置项 >( j2 Z5 Y: {' K6 K& v" C0 j
    <profiles>0 A# p+ d) m. v9 o0 L& A$ v
        <default>$ l' e: L! d" h) h6 M: h
            <max_memory_usage>12G</max_memory_usage>
5 e0 u) }8 J1 d  f% e        </default>
; D$ T# a" ]$ r% {    </profiles>
9 Q: w, I( j0 A& R$ b1 J    <!其他配置项 >5 p" `, f9 ]1 f' H- X3 o8 E& K4 N4 E
</yandex>
5 c/ l, n$ E- R+ |7 ]# i在这个例子中,我们将最大内存使用量从默认的10G修改为12G。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-18 17:11:48 | 显示全部楼层
<yandex>
- ~2 Y3 B9 r  ?3 X8 x) z) E+ ^7 g    <!其他配置项 >
8 X9 S, I% C, o! |- i# I    <profiles>
2 t. @7 A5 d* b2 x- Z        <default>% u2 @( Y6 A1 A& g+ l$ [
            <max_memory_usage>8G</max_memory_usage>. }/ D; \+ p6 V3 }) i' T5 u. \
        </default>
* U/ d/ [4 [* ~% P" |8 E    </profiles>6 A& t6 q* b% S* W
    <!其他配置项 >! `* S2 H6 H) P6 g/ v; d
</yandex>
. Y. B( h) M) ~! `: i
& k3 C, P+ F# P7 H) H: k现在环境配置的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:44 , Processed in 0.019456 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表