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

ClickHouse内存配置参数调整优化

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2024-11-18 10:21:32 | 显示全部楼层 |阅读模式
遇到问题,使用内存和cpu超高,只能调整内存使用率来降低cpu负载的问题。9 X  I0 C9 b8 Y* L3 R$ n5 h: s

1 r. D& k2 N1 T" j0 S3 ?! Q! ~$ G5 I" r7 q0 X

7 G# g$ L: L) S1 F' w2 @9 H+ ?% C3 t
1.max_memory_usage  s' u% B) H7 I- T7 e2 {# a0 ?7 s
运行单个查询时使用的最大内存量。
+ \% `0 L8 ~$ [( _; ^- u* i1 k: B4 y默认设置为无限(设置为 0)。
) h! S4 W0 r' e' m  j0 V, D& _0 n该设置不考虑可用内存容量或机器上的内存总量。该限制适用于单个服务器中的单个查询。你可以使用SHOW PROCESSLIST查看每个查询的当前内存消耗。此外,每次查询的内存消耗峰值都会被跟踪并写入日志。
+ I8 ?, V0 f& Q2 V9 m3 h某些聚合函数的状态不会受到内存使用情况的监控。( S( R9 {1 \/ t  s% w
对于来自字符串和数组参数的聚合函数min、max、any、anyLast、argMin、argMax的状态,不完全跟踪他们对内存的使用情况。
( F' Y+ y. I. a& j1 q内存消耗还受到 max_memory_usage_for_user 和 max_server_memory_usage 参数的限制。  w4 P( D0 `& d9 L

8 B' x' y# }6 F; g& p ! \6 S- L5 z& T$ s& q

) C* t) X5 }1 L- }) ]/ K2.max_memory_usage_for_user
& U/ x+ Z( l/ \# D$ i) k5 o  |( o* H在单个服务器上运行用户查询时使用的最大内存容量。
% d% p9 T* X: q: D默认值在Settings.h中定义。默认情况下,该值不受限制(max_memory_usage_for_user = 0)。
8 v/ U/ h% |3 l, e
# y; |; q, f: C5 p% c8 h
& c6 \/ D' a  L" O8 z$ e  K$ F* m: U+ D  l; v  k$ V. [( o2 U
3.max_server_memory_usage
% s* [# u4 r6 i9 p' C  g内存使用总量限制。零表示无限制。
+ S" I, B( W- F0 t( U& K默认的 max_server_memory_usage 值计算公式为:memory_amount * max_server_memory_usage_to_ram_ratio。
/ V; s( M0 i! ?7 j& ?& ~: Q# `. U

2 m! q$ P: Q$ r7 I5 H& d  ?' A2 V3 S! |. D5 M
4.max_server_memory_usage_to_ram_ratio- T1 Y' D3 j4 w1 W
与 max_server_memory_usage 相同,但与物理内存成比例。允许降低低内存系统的内存使用率。零表示无限制。. \! K- C6 }) ?
在内存和交换容量较小的主机上,可能需要将 max_server_memory_usage_to_ram_ratio 设置得大于 1。0 表示可以使用所有可用内存。8 z! y: j6 L6 a) i1 P" u
默认配置:& F2 V' Y8 h( A$ t6 n/ x
4 l% |- s3 k7 F% l

, |& P8 ^' y6 ?! e( h<max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio>- p9 h- q. c& b. p

  y1 ^$ K) ?$ o. `; G; D9 |/ D) U. e( e
5.max_memory_usage_for_all_queries
/ f& E4 J- [9 c/ p. r默认值是0,即不限制对内存的使用。; r0 R% v( g! L( L8 R" |

; a( Z  `, a! ?) U8 Y9 P! c; |- u3 H; D4 W! V
内存配置的官方建议
: l! Z- A$ D8 l/ K1 M7 ]
: A8 R6 x1 S- k$ L! @& T
0 m# ?% |, b; O: U0 [- G% r5 S: g  [https://clickhouse.com/docs/en/operations/tips. n9 l4 u2 Q( }  ^" H
对于少量数据(压缩后不超过 ~200 GB),最好使用与数据量相同的内存。对于大数据量和处理交互式(在线)查询时,应使用合理的内存容量(128 GB 或更多),这样热数据子集才能放入页面缓存。即使每台服务器的数据量为 ~50 TB,使用 128 GB 内存也比使用 64 GB 内存能显著提高查询性能。
; X$ V$ b0 \# _9 E/ v" Z) C' K  g" o. _2 L. T
不要禁用overcommit。
9 k- {1 B4 v$ [* B. w4 f4 J5 H+ f# l$ |# k

/ D' S/ ]5 F& u* z1 J3 T$ cat /proc/sys/vm/overcommit_memory 的值应为0或1
. T6 A& ^6 T. Y7 S+ `运行3 W0 Z  L: D9 k% x, @2 B
. A3 y, F; c& b! L1 b8 {% ]5 l6 L
/ g( X- V% f" N( L) q( j' P
$ echo 0 | sudo tee /proc/sys/vm/overcommit_memory
0 T9 B, G% I. j& O9 }2 i如果系统内存不足 16GB,可能会出现各种内存异常,因为默认设置与内存容量不匹配。建议内存容量为 32GB 或更大。, p- N1 z. E8 s2 H
+ @- R( t1 h, a5 X$ y4 z% h

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-18 10:28:12 | 显示全部楼层
5 `6 A7 t8 i7 ~# D
# vim /etc/clickhouse-server/config.xml1 r8 U8 Y& j  w8 s! H0 m0 h4 L- o; U
在这个0 ^( J$ R- V, k
<yandex>
9 r: ]/ X; Z. _" ^& w; N, C! @; \* B</yandex>
8 d2 G& O& q% j- b- j0 ~& x0 K9 Z标签里配置:) z& j; K* z* Z4 h+ Z) x

$ n/ S) x9 \& p; Q6 J例如:" p& `8 w6 ~; b! `" [
<yandex>
" i2 X  G0 C5 F/ X6 v  }& f, L        <!其他配置项 >
6 M' b' u0 Z/ i# P7 n5 y! h    <profiles>4 c; q" |4 N2 ~% {
        <default>
' Y6 S! _* u. [1 n" @6 `3 \# k            <max_memory_usage>8G</max_memory_usage>4 |; l, }. V3 \) \+ h
        </default>7 V; o+ b/ \5 M5 I7 N1 L8 Z- R# D
    </profiles>3 ?. `, r5 c5 M' @
    <!其他配置项 >
! L; c* [/ h, K</yandex>

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-18 10:30:34 | 显示全部楼层
默认内存设置2 Y0 f, g5 v) o7 u7 Q9 D

: {' ]+ P* m  A' Q1 L8 ]ClickHouse默认为每个客户端分配8i(即8MB)的内存,而服务器总内存限制则为10g(即10GB),这意味着无论查询复杂性如何,每个客户端连接最多只能使用8MB的内存,而整个ClickHouse服务可用的内存总量被限制在10GB以内,这种设置在大多数情况下可以防止内存溢出,但在某些高负载或大数据分析场景下可能会限制性能。* Y0 Q$ `0 M8 y' l2 O

  }/ n% x7 ~. O+ C' K" y) k修改内存限制* A4 h( `+ ]4 }7 ]5 ~
. U3 H3 z$ x+ N% X
1. 配置文件修改5 ?9 O- y: K9 a7 S. J: L' d
& X8 X  g( b1 \
要修改ClickHouse的服务级别内存限制,首先需要编辑其配置文件,通常这个文件位于/etc/clickhouseserver/config.xml,您可以使用文本编辑器打开此文件:
2 {: @2 y0 l6 r: Q5 z+ T7 {  @- E; {# N3 n& ^- g7 ~
客户端8i 服务器10g_修改ClickHouse服务级别内存限制1 [9 v' z3 e. u. t4 u; j
(图片来源网络,侵删), s& e: C- s* }8 p/ Y$ V: h+ e
<yandex>
' f* G* K7 [; G2 M4 R    <!其他配置项 >; j( r8 o* @/ a" R9 ]
    <profiles>
1 ^: W* d. a- D. B- f+ U0 T' ^) }0 |6 ?        <default>! i. @7 }$ o- d& N* L
            <max_memory_usage>12G</max_memory_usage>
8 i3 k8 e9 e* V9 J% c        </default>9 q3 W2 J* F: m- K/ `
    </profiles>
' S6 G- _2 S4 h' K! X7 `    <!其他配置项 >1 Z' k' K* @$ _( W0 u% [; L
</yandex>
+ v6 ^, j* D$ ?在这个例子中,我们将最大内存使用量从默认的10G修改为12G。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-18 17:11:48 | 显示全部楼层
<yandex>/ s6 `4 U& f0 ^% d2 d- b8 a
    <!其他配置项 >
' C2 L* y+ s# p  k9 A$ h" {    <profiles>( c( M. I3 p2 u/ B& T- D# W/ h- p
        <default>7 a7 v& S- D2 T: o
            <max_memory_usage>8G</max_memory_usage>
9 ?7 g5 c+ I. d2 b3 s4 X( K        </default>
* a/ ]& f: D! k& C% m    </profiles>
2 w) _/ l9 Y8 H# R    <!其他配置项 >8 m+ A  p) q% y8 v1 @/ e3 }
</yandex>
! p3 @/ A$ b- T8 H: ]* U! A7 U$ p" Y6 l# k0 c- q
现在环境配置的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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