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

ClickHouse内存配置参数调整优化

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2024-11-18 10:21:32 | 显示全部楼层 |阅读模式
遇到问题,使用内存和cpu超高,只能调整内存使用率来降低cpu负载的问题。9 L- L" h. x7 m. g7 X+ r7 I

0 G& n. }7 D& R
4 c% Y. G3 D: M
$ w1 w' y( Q6 n" U# C9 `$ j1 N
! I# i( p1 G( Z1.max_memory_usage
1 A0 B. h3 `& r- w  I/ \+ P$ x运行单个查询时使用的最大内存量。
4 @; b( Z. X! Q$ S默认设置为无限(设置为 0)。
3 H8 C: `9 C6 X1 r9 r* g1 P2 W该设置不考虑可用内存容量或机器上的内存总量。该限制适用于单个服务器中的单个查询。你可以使用SHOW PROCESSLIST查看每个查询的当前内存消耗。此外,每次查询的内存消耗峰值都会被跟踪并写入日志。3 g1 ?- {1 G3 o3 P
某些聚合函数的状态不会受到内存使用情况的监控。# m" a1 O9 r. S4 l& k$ `
对于来自字符串和数组参数的聚合函数min、max、any、anyLast、argMin、argMax的状态,不完全跟踪他们对内存的使用情况。7 \, |4 G2 E+ p0 K5 k; J
内存消耗还受到 max_memory_usage_for_user 和 max_server_memory_usage 参数的限制。
. `3 e; x+ _& |3 U3 d# ~# t. O8 X
) d2 f* ~7 H+ W3 T- H ( a, n% R8 A; [, a
# x& N9 W  W9 @8 ^# d' P6 e9 l2 `
2.max_memory_usage_for_user
7 C/ ~9 n# G+ ^8 ?* e7 l* L在单个服务器上运行用户查询时使用的最大内存容量。, g+ V& m2 ]: i; r0 _- [$ }
默认值在Settings.h中定义。默认情况下,该值不受限制(max_memory_usage_for_user = 0)。
8 a  }9 d: I% w
8 a  h+ P. o4 y& c
( f& y9 e) U* b- |: y& w- n6 _% |0 P. E2 Y- H  ^. }$ c0 f
3.max_server_memory_usage
4 @! b4 A1 O1 k8 A! q内存使用总量限制。零表示无限制。2 V  n& I# F$ f- V
默认的 max_server_memory_usage 值计算公式为:memory_amount * max_server_memory_usage_to_ram_ratio。
; m. E& @; M- K! {. v' z2 d  a2 Z1 i. f$ h% l5 g

5 u6 B0 ^8 r) A# F' \- C- r! W8 }( P/ {1 e9 y$ Y  ?6 v; Z' M  m) r
4.max_server_memory_usage_to_ram_ratio
6 x  |. C$ h2 p; R% J; {与 max_server_memory_usage 相同,但与物理内存成比例。允许降低低内存系统的内存使用率。零表示无限制。- x* Q( e; _* |! Z' f
在内存和交换容量较小的主机上,可能需要将 max_server_memory_usage_to_ram_ratio 设置得大于 1。0 表示可以使用所有可用内存。- N; x# U3 V. D
默认配置:
0 U, P% `: `) s5 r3 P6 U% e9 Z% z3 J, H+ a& x+ M7 ^

, k2 r/ x  f7 M- r3 R<max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio>: t5 p9 w* r, ~8 x5 Y2 a% V* B/ A

0 N: U5 T% @3 c! l% z7 o
0 B% z, r; s" G( ~* L  M" r! L; _5.max_memory_usage_for_all_queries! I& {( d! l3 [; Z
默认值是0,即不限制对内存的使用。
; q( Q, V  I" V2 i5 x% q3 \* x
0 g' A  a* ~" R4 @) h- |- t, f  X  V/ c% ]
内存配置的官方建议
5 i7 s1 g+ g  L% q1 l  T, r) Z5 A8 L/ E& ?/ r! z

' M0 Q) d3 |- a2 G& ^! L) G# T+ @https://clickhouse.com/docs/en/operations/tips
( {4 v- }( }! {& Q对于少量数据(压缩后不超过 ~200 GB),最好使用与数据量相同的内存。对于大数据量和处理交互式(在线)查询时,应使用合理的内存容量(128 GB 或更多),这样热数据子集才能放入页面缓存。即使每台服务器的数据量为 ~50 TB,使用 128 GB 内存也比使用 64 GB 内存能显著提高查询性能。
+ S! ?8 F+ p- x8 A8 E; s, V* g4 M* c: v* O$ a2 i
不要禁用overcommit。* p: E; f" t" h' f& W/ q3 I) m0 p% F
9 x. n8 e+ ?4 O

1 @% D' N$ e7 y4 J7 u9 ]1 D: F$ cat /proc/sys/vm/overcommit_memory 的值应为0或1
2 m- ?+ |$ B' F* H运行& J2 ?& D0 |- g5 a0 l: c

5 [! ?4 S- H  |) P; ^! D  z
, y3 @4 R, t# ^2 n* N$ echo 0 | sudo tee /proc/sys/vm/overcommit_memory/ K) q6 i2 x# Q
如果系统内存不足 16GB,可能会出现各种内存异常,因为默认设置与内存容量不匹配。建议内存容量为 32GB 或更大。8 m. j; N7 L! F2 @1 G1 N+ I

* ~3 S6 `# @& ^

1

主题

0

回帖

12

积分

管理员

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

+ B4 R' @6 v5 A/ T* s) ~# vim /etc/clickhouse-server/config.xml7 _2 D4 N+ G% @! N* z
在这个: w9 s; [& Y, M8 B/ r, R2 o( @: ?
<yandex>" `8 R! R# d! t6 b9 N4 B  k
</yandex>
: h$ ]% e+ s/ @. l. E$ W标签里配置:
5 t2 g2 e' \( Q( V0 [" k2 M1 n# S: E- u! ^6 P1 ~; u
例如:! _1 N6 R# ?) o
<yandex>5 `" o' h8 o- E* b' H- W
        <!其他配置项 >5 P, m# s# U7 G- T
    <profiles>
6 C  W- s+ t2 z: k        <default>
# R( Y- U. k1 N" D8 W            <max_memory_usage>8G</max_memory_usage>3 h. e4 R3 s- N/ F
        </default>' r" T$ D: p) U
    </profiles>- w& X* h8 P' j+ s& Y
    <!其他配置项 >
) d) \$ `% Q& X5 g, D( _  G6 |* n</yandex>

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-18 10:30:34 | 显示全部楼层
默认内存设置
6 p& G! N) `: G! q0 X- U% P5 _
8 T1 l: i6 }9 C& [( v" h5 |ClickHouse默认为每个客户端分配8i(即8MB)的内存,而服务器总内存限制则为10g(即10GB),这意味着无论查询复杂性如何,每个客户端连接最多只能使用8MB的内存,而整个ClickHouse服务可用的内存总量被限制在10GB以内,这种设置在大多数情况下可以防止内存溢出,但在某些高负载或大数据分析场景下可能会限制性能。
& N5 g! V! o6 B! A) n# p  {7 ?. o9 P
修改内存限制
2 U7 Q$ I2 A6 Y* t
* J. ~2 ~+ s1 |) i: [2 O! \1. 配置文件修改/ u- V( Z7 Y, G  a4 f' h; T$ ~1 b

+ f" r. l) E' b, \' [9 m! p& C要修改ClickHouse的服务级别内存限制,首先需要编辑其配置文件,通常这个文件位于/etc/clickhouseserver/config.xml,您可以使用文本编辑器打开此文件:3 g/ ]1 E1 I1 q

9 Z1 K  f2 ^! B2 W客户端8i 服务器10g_修改ClickHouse服务级别内存限制
% {, `( m& E6 K7 K(图片来源网络,侵删)* M: q; [1 `5 y. t( o  L/ q) E
<yandex>
4 M! ~0 \  B, z( X    <!其他配置项 >( R) G/ o5 k" R
    <profiles>
' I" ?' _3 x1 I/ }        <default>
" C8 |2 U4 D8 @) r, P( I* k            <max_memory_usage>12G</max_memory_usage>5 y' f) T( ~$ {5 P  b* a! d
        </default>/ f: |! d) O$ v/ b& R' R$ D
    </profiles>
2 q) n( M: U: G8 R* {    <!其他配置项 >, {1 |9 X& ?1 k& L6 E6 Z! m  k
</yandex># g# L# r+ {) N8 L1 @
在这个例子中,我们将最大内存使用量从默认的10G修改为12G。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-18 17:11:48 | 显示全部楼层
<yandex>' I% w' Y0 ~# u6 e
    <!其他配置项 >
- L7 t% p% s5 y7 L- Z1 j. @. }    <profiles>
; w: m+ m% u  Z4 k  A        <default>% O/ v2 Z: z8 D: Z" w4 P. E
            <max_memory_usage>8G</max_memory_usage>
, ]) k/ X( [' C9 V        </default>
. e' A; v. Z" a8 u$ j0 }+ w9 [    </profiles>
, z& f; ~) m/ }3 a3 X6 `( ^    <!其他配置项 >
% l' q9 [8 h, g- v3 E8 j. E</yandex>
; ?3 S% |" ^! h! B* L* ^, h
% T/ W5 f* L& v9 T9 V" e! N; }. d现在环境配置的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:49 , Processed in 0.025565 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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