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

ClickHouse内存配置参数调整优化

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2024-11-18 10:21:32 | 显示全部楼层 |阅读模式
遇到问题,使用内存和cpu超高,只能调整内存使用率来降低cpu负载的问题。
% h) W2 o' D: H+ @5 {5 ]* Z0 |1 t$ y3 q7 ]
: R$ V* k1 L8 K; l7 ~8 m' m- K' m
) g2 Q, Y% y5 W7 @% d
+ U2 E( ^5 @9 G  D
1.max_memory_usage
4 n0 T: a$ o( @5 t7 J( X运行单个查询时使用的最大内存量。% ]( ~: j7 I7 y, f* O" j
默认设置为无限(设置为 0)。6 `7 V- }4 I" i# z; C/ [: P3 o$ S
该设置不考虑可用内存容量或机器上的内存总量。该限制适用于单个服务器中的单个查询。你可以使用SHOW PROCESSLIST查看每个查询的当前内存消耗。此外,每次查询的内存消耗峰值都会被跟踪并写入日志。# V; N1 k* z# S; r. s, h
某些聚合函数的状态不会受到内存使用情况的监控。
. X/ W  N: A$ ^( j, v4 Y对于来自字符串和数组参数的聚合函数min、max、any、anyLast、argMin、argMax的状态,不完全跟踪他们对内存的使用情况。" S/ N' k/ S+ ]# A" ], A' N
内存消耗还受到 max_memory_usage_for_user 和 max_server_memory_usage 参数的限制。. t: m7 f8 @* g0 n
% A# ^# E, x1 G# i7 n- a

. {6 W* w4 C) D; m  q- ^! D6 c8 b* |6 {) D5 l" y7 I" `1 k
2.max_memory_usage_for_user5 R. [- }, W: l( x, `: u# l3 x# m7 v
在单个服务器上运行用户查询时使用的最大内存容量。$ x/ D9 i  l# L  X: J
默认值在Settings.h中定义。默认情况下,该值不受限制(max_memory_usage_for_user = 0)。; Y" i: F5 b. T1 i# V* x: |, p

8 U- i) v% f% J  _
4 K5 G! a" c( H/ W5 ^7 \
! b) F9 F; I5 P% S3.max_server_memory_usage
! H* t0 h9 p6 P4 F2 k; l. @1 J内存使用总量限制。零表示无限制。' m- S% k8 r! d( e
默认的 max_server_memory_usage 值计算公式为:memory_amount * max_server_memory_usage_to_ram_ratio。2 A7 w! E7 q2 q  N9 p* \$ c3 `2 K9 A
* I- k% L3 S/ N& w3 X) u) ?
$ B* y6 \' a0 D6 C: \
1 V9 H; p4 A# T; N- G* t
4.max_server_memory_usage_to_ram_ratio% e7 Z4 D* Z4 ^0 `( j" g& {
与 max_server_memory_usage 相同,但与物理内存成比例。允许降低低内存系统的内存使用率。零表示无限制。8 h4 X9 e8 w5 {% T7 Q, s
在内存和交换容量较小的主机上,可能需要将 max_server_memory_usage_to_ram_ratio 设置得大于 1。0 表示可以使用所有可用内存。1 [+ _* t0 o$ f: c! S) i, k
默认配置:
, Q6 @/ c( P$ M3 O1 ?+ d( {) ^! T; q: @7 C
2 M9 z6 v" C7 I& ?
<max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio>
4 q  }% S0 {; Y 4 H8 D/ u+ r  L% ]% j

4 m8 Y% a- d& W% P% ]* ]5.max_memory_usage_for_all_queries" V4 i- k% ~8 }2 W. h5 T
默认值是0,即不限制对内存的使用。
5 i# h0 _) p( d# f8 k/ p  M% k! @0 r' `7 O6 v. M5 @: i

% ?2 j& ?$ P9 s$ c6 z内存配置的官方建议
& }# S! G9 {' C) Z4 U: d1 g* a( Y- K
4 a9 s! k% b* w  _; G2 M
https://clickhouse.com/docs/en/operations/tips
6 r* i+ {; s4 c+ N. z" k对于少量数据(压缩后不超过 ~200 GB),最好使用与数据量相同的内存。对于大数据量和处理交互式(在线)查询时,应使用合理的内存容量(128 GB 或更多),这样热数据子集才能放入页面缓存。即使每台服务器的数据量为 ~50 TB,使用 128 GB 内存也比使用 64 GB 内存能显著提高查询性能。
; [* r: G' }9 Z6 K: G2 g% v
- X. C9 R( t! j; O& X* I( i不要禁用overcommit。; {3 k( l" w& y. p. m1 c

0 Z3 |" T" f6 k2 W5 i. ]0 b9 D
7 r* k2 |- y" N, v! H  s* i$ cat /proc/sys/vm/overcommit_memory 的值应为0或1
) l. g! N% E0 e2 `+ {# |5 H运行
; _! r2 `0 o" o' X$ V/ Y- ~1 {4 ~" X4 e: k, O1 r
/ ^% f/ h0 b2 W4 K" D3 y
$ echo 0 | sudo tee /proc/sys/vm/overcommit_memory
5 ^3 P! o) x/ O如果系统内存不足 16GB,可能会出现各种内存异常,因为默认设置与内存容量不匹配。建议内存容量为 32GB 或更大。7 f$ c$ G- i" w( V& D7 t
3 z* B7 Q  c( l: p+ {1 _

1

主题

0

回帖

12

积分

管理员

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

+ n0 i: c! t8 A' z# vim /etc/clickhouse-server/config.xml
0 w* ^5 [# Y3 r5 S8 \在这个
6 Q" Z( j; J  E' Q  u' Q9 Z<yandex>
9 i! ]; s# q+ r</yandex>/ h/ W; @4 f! y* }4 m" {. C  x
标签里配置:* t  u8 Q4 b1 ]5 r; @7 O( }, b

4 h9 [3 c$ H& A  z1 z% @1 P, G例如:
; t, q5 S; }7 P+ C<yandex>
9 V) P" t) C7 t0 ^( n% k. H) T  Z        <!其他配置项 >. X8 S% l$ d' Z" V
    <profiles>
  `, `- h8 P7 S$ h" R        <default>* ?9 x, c( ?* J
            <max_memory_usage>8G</max_memory_usage>3 q8 X! g7 B9 H$ d3 n/ m& m) g
        </default>, \7 ?; w* }# S" k& I
    </profiles>
3 I4 f& |4 }3 d# q4 X) Q+ M6 X    <!其他配置项 >
% b/ |8 Q( E. G% T( B- p2 N9 Y</yandex>

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-18 10:30:34 | 显示全部楼层
默认内存设置" M: j; F7 h% M% N

7 N7 c# `9 i" A7 Y, ~' OClickHouse默认为每个客户端分配8i(即8MB)的内存,而服务器总内存限制则为10g(即10GB),这意味着无论查询复杂性如何,每个客户端连接最多只能使用8MB的内存,而整个ClickHouse服务可用的内存总量被限制在10GB以内,这种设置在大多数情况下可以防止内存溢出,但在某些高负载或大数据分析场景下可能会限制性能。; {1 m' g* T. z: P( G7 a
. _. f1 P+ @# l, S4 P
修改内存限制
  p. `2 s) [# M6 e( o  r
$ _1 t* z& q8 f' J2 t1. 配置文件修改
6 b7 b9 b* y. q- c/ k$ t5 P( ~5 ^
. {: w/ |% I' r  ]! S# [6 `要修改ClickHouse的服务级别内存限制,首先需要编辑其配置文件,通常这个文件位于/etc/clickhouseserver/config.xml,您可以使用文本编辑器打开此文件:
- G; S- @/ d1 |
4 t' R$ L' a! a/ j0 G8 o客户端8i 服务器10g_修改ClickHouse服务级别内存限制
. J, y, J* H& k3 ~" Y9 O(图片来源网络,侵删)
& W$ M* X. b, ^, F$ A<yandex>
& b# o; ]( s8 j- ~    <!其他配置项 >: t! n& h) U# E6 k- O0 }4 {3 g9 M
    <profiles>
+ c8 L- n" Y+ X        <default>) [" m4 @. l( [/ T
            <max_memory_usage>12G</max_memory_usage>
. E3 J9 d8 L5 O* w! D, m: J3 P        </default>
( |3 n$ ^+ m9 A2 U/ x. n5 b    </profiles>/ i3 r4 ], K4 o- D2 F
    <!其他配置项 >
7 O  L+ C% D5 |7 Z  ~4 m</yandex>+ h2 h+ o6 i: _2 `) D
在这个例子中,我们将最大内存使用量从默认的10G修改为12G。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2024-11-18 17:11:48 | 显示全部楼层
<yandex>
: v, Y: D, x- R$ d7 d% x) F    <!其他配置项 >: ]- t9 ^0 r9 m, |" V' @( A
    <profiles>/ }2 r+ H' {& E' _# ~* v
        <default>, _' L: g; J9 H8 f
            <max_memory_usage>8G</max_memory_usage>
* e0 w% y2 h: c/ e) C        </default>- P( i/ H4 l& \3 f$ \
    </profiles>/ P  W) ?3 T6 g* m' s  ]
    <!其他配置项 >1 D( Z7 l; y5 ^: m* k
</yandex>3 A; P. J: A# A, X( Q" x3 V
3 e; j! d/ o$ Q  k
现在环境配置的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:46 , Processed in 0.023630 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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