易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 35|回复: 3
收起左侧

ClickHouse内存配置参数调整优化

[复制链接]
发表于 2024-11-18 10:21:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
遇到问题,使用内存和cpu超高,只能调整内存使用率来降低cpu负载的问题。
7 m6 M4 c" _7 f" U- M* Y) Q' }, V" \& i* Q, e% C
( ?3 O* k+ j0 t# @4 h4 K

7 [- X  u+ L% `# J* o1 f: n0 S0 B2 b, Z+ x9 T
1.max_memory_usage5 O4 w/ q+ d* p. P) N! z* `
运行单个查询时使用的最大内存量。2 g% J# ^5 I' A9 ?% N- r
默认设置为无限(设置为 0)。/ ~! x' k8 F% S' A6 L5 N
该设置不考虑可用内存容量或机器上的内存总量。该限制适用于单个服务器中的单个查询。你可以使用SHOW PROCESSLIST查看每个查询的当前内存消耗。此外,每次查询的内存消耗峰值都会被跟踪并写入日志。
( ?, A$ T1 s" R% u' w# D某些聚合函数的状态不会受到内存使用情况的监控。+ v/ P+ |6 G9 U' `# V
对于来自字符串和数组参数的聚合函数min、max、any、anyLast、argMin、argMax的状态,不完全跟踪他们对内存的使用情况。
5 Y4 Z4 ], L/ ?内存消耗还受到 max_memory_usage_for_user 和 max_server_memory_usage 参数的限制。
7 k1 j1 d* d4 l- F) Z
% \# G5 A; H/ L0 q0 s% q8 z
6 w, j! ^. A+ z0 h" ~0 V. `, K! D6 z
2.max_memory_usage_for_user' C1 \9 \. P, g/ Q
在单个服务器上运行用户查询时使用的最大内存容量。
  e! ~1 v, D9 t9 y9 O默认值在Settings.h中定义。默认情况下,该值不受限制(max_memory_usage_for_user = 0)。! z  F6 z1 z: g5 M$ h

. u) {* w* w4 d$ P# ^7 y5 E. ~
2 ^' J3 p4 L! b/ G2 j5 k5 v2 w8 G
3.max_server_memory_usage! S- M  V& o. Y# V- h
内存使用总量限制。零表示无限制。0 Y4 `5 u9 V) x- y" F% f8 \
默认的 max_server_memory_usage 值计算公式为:memory_amount * max_server_memory_usage_to_ram_ratio。
2 _7 [2 R- t9 ^* q" N# F$ D4 M" J" }- B- I

" _# e6 x* K1 C. r! J( q, y' [: z
0 Z5 |1 L$ p: X: Q' g! H6 `. E, [4.max_server_memory_usage_to_ram_ratio  [4 T  Q- ?( D6 ?3 z) x& P
与 max_server_memory_usage 相同,但与物理内存成比例。允许降低低内存系统的内存使用率。零表示无限制。
- y: _: u. P# d, _* t8 ^2 ?在内存和交换容量较小的主机上,可能需要将 max_server_memory_usage_to_ram_ratio 设置得大于 1。0 表示可以使用所有可用内存。
: A' [) L7 O+ F- C3 D默认配置:
& a) h  b: V5 D! V; {9 y  X5 F( a- A9 G' h: Y+ P
: X6 M  {+ W6 c- {5 B/ T! t8 P
<max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio>
9 U: b6 J" m# z6 B " h: F" I. t0 B' n5 f( @9 x
# }$ H: O6 Y4 \3 I
5.max_memory_usage_for_all_queries; ^3 D$ \; I# c
默认值是0,即不限制对内存的使用。" C$ u( j. L1 |$ \/ x
7 W9 S9 j3 q/ t3 `0 E
1 K" g3 u; `1 Z/ x0 @; s
内存配置的官方建议+ H0 _- T9 ^, h

3 y: R3 m# [* P; O# b+ ?+ q
0 H7 Z& A6 Y: ]3 d) Rhttps://clickhouse.com/docs/en/operations/tips+ r, l3 {+ V- P  p$ J3 z
对于少量数据(压缩后不超过 ~200 GB),最好使用与数据量相同的内存。对于大数据量和处理交互式(在线)查询时,应使用合理的内存容量(128 GB 或更多),这样热数据子集才能放入页面缓存。即使每台服务器的数据量为 ~50 TB,使用 128 GB 内存也比使用 64 GB 内存能显著提高查询性能。
3 J* j" F# s' ?9 A1 j& E
- a& c4 ^7 r0 {" Z- E; I. J- m! ~不要禁用overcommit。9 ?$ r3 l: C, [. u* n/ e8 X) I
6 ]; G9 V# j, g* g$ T# e
" L  N  r7 D/ a! t8 D1 L
$ cat /proc/sys/vm/overcommit_memory 的值应为0或17 P2 z* P& A0 V& w8 K
运行
' x1 Z# `: r4 z1 r- X) T# Y$ N

8 S$ ?/ Y5 Z4 j$ R0 n. s7 i/ L$ echo 0 | sudo tee /proc/sys/vm/overcommit_memory
& j2 L" M+ @& g( `7 Q如果系统内存不足 16GB,可能会出现各种内存异常,因为默认设置与内存容量不匹配。建议内存容量为 32GB 或更大。# O+ D8 ?* B$ K6 w2 B" I0 f
$ ^: c1 I5 h- J! N) @  h! g, _+ Y
 楼主| 发表于 2024-11-18 10:28:12 | 显示全部楼层

3 z8 U. o" f1 V) T/ j$ d# vim /etc/clickhouse-server/config.xml
" [) Q6 j6 a. u; _/ M1 _. n在这个
# g9 p# ?+ p8 `' y8 k! D! c<yandex>
6 d( U3 O# }/ p7 V1 G4 V  [% f</yandex>
7 n' @6 I( p6 Y, \* q标签里配置:
6 ^8 X' v* g' R8 h& f* u* z+ h/ K( o
例如:
# D* p& t( p) ]2 V6 R<yandex>- c4 J* D& h- D
        <!其他配置项 >! u( H& s5 c1 O: s
    <profiles>/ L# r% Z7 k0 R% g* |+ \: ~6 `
        <default>4 E, V# w" I0 f5 k) |
            <max_memory_usage>8G</max_memory_usage>7 N% V& z8 w5 Q" R  I0 G
        </default>( g7 B! G2 N- ?5 o( S) B8 x, p9 C% k
    </profiles>
$ H/ f! F, V& }( p    <!其他配置项 >
! l( C% x0 h7 k  p9 V% v/ b6 r5 v</yandex>
 楼主| 发表于 2024-11-18 10:30:34 | 显示全部楼层
默认内存设置) Q: m! y5 I) V  N

- G& A5 d, K: n6 fClickHouse默认为每个客户端分配8i(即8MB)的内存,而服务器总内存限制则为10g(即10GB),这意味着无论查询复杂性如何,每个客户端连接最多只能使用8MB的内存,而整个ClickHouse服务可用的内存总量被限制在10GB以内,这种设置在大多数情况下可以防止内存溢出,但在某些高负载或大数据分析场景下可能会限制性能。
0 w8 ~, i, K# p9 A# E* Q8 [* f$ G. r5 V6 H# t4 b; R
修改内存限制% f4 S% C/ L  n) A% ~% A8 i
0 m+ h- S: V4 @  {  H+ C
1. 配置文件修改
5 j* v0 {/ h, W6 X$ u4 r3 D4 D7 E. ^3 R+ T) V
要修改ClickHouse的服务级别内存限制,首先需要编辑其配置文件,通常这个文件位于/etc/clickhouseserver/config.xml,您可以使用文本编辑器打开此文件:) f9 U, D) N$ C
0 y% U% n6 y# H' W0 _& }) l/ K7 x
客户端8i 服务器10g_修改ClickHouse服务级别内存限制* e5 d- E" p. O& o8 V
(图片来源网络,侵删)2 \& K% m+ m5 ]" @5 n% N4 u
<yandex>
3 q& Z  c3 ^; T+ U    <!其他配置项 >9 L, A- ]2 y: d: M: t- [; s8 `
    <profiles>
: w& n; Y1 g4 ~9 \7 l' h        <default>3 |& X: @" l3 `
            <max_memory_usage>12G</max_memory_usage>
: k0 Q8 y. f+ _        </default>
; i$ q5 Q7 o' @    </profiles>
5 W+ e8 |: s3 P! s, Q+ r3 e7 a    <!其他配置项 >
" [, H, N6 \# Y! {</yandex>+ y1 I3 O% c3 K& H: S, s
在这个例子中,我们将最大内存使用量从默认的10G修改为12G。
 楼主| 发表于 2024-11-18 17:11:48 | 显示全部楼层
<yandex>
$ Z8 t1 F3 p$ B0 X9 C9 `+ J1 f    <!其他配置项 >
+ }+ v/ T8 ~$ _; z9 j5 ^6 |' g9 @    <profiles>
% w( T8 K3 T8 ]- R; @# R        <default>0 W) _5 c2 r' c+ C8 d5 s9 H  t
            <max_memory_usage>8G</max_memory_usage>6 `4 ?* W$ K2 x( e3 U( l
        </default>* H* m/ \7 k2 \2 J
    </profiles>6 F# T, p; f: e4 w) F
    <!其他配置项 ># Q& E6 _3 _# k" j  U) [
</yandex>7 x& e2 r* w/ ]! i& n
+ p; P$ j! v4 @" z$ m) x3 i0 ^' [
现在环境配置的
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:20 , Processed in 0.045206 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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