易陆发现互联网技术论坛

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

ClickHouse内存配置参数调整优化

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

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

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

x
遇到问题,使用内存和cpu超高,只能调整内存使用率来降低cpu负载的问题。, L3 l/ P8 ~$ I
% j/ D3 U2 Z! i5 ^

  K" u% i+ [6 h
7 g+ h  C5 f# [3 d& B8 _: Z+ \% r, O
1.max_memory_usage
  t& N/ O# q* S2 L8 s/ j运行单个查询时使用的最大内存量。
$ ^2 J) B) Y& ^5 a6 G$ z4 l默认设置为无限(设置为 0)。
4 }7 J! r+ O& L; u& b8 h, i该设置不考虑可用内存容量或机器上的内存总量。该限制适用于单个服务器中的单个查询。你可以使用SHOW PROCESSLIST查看每个查询的当前内存消耗。此外,每次查询的内存消耗峰值都会被跟踪并写入日志。
- C! A/ ~, D- w. T某些聚合函数的状态不会受到内存使用情况的监控。9 r; u+ `0 n7 \3 L8 G" ?
对于来自字符串和数组参数的聚合函数min、max、any、anyLast、argMin、argMax的状态,不完全跟踪他们对内存的使用情况。
  @0 |$ J+ y: p) S' @内存消耗还受到 max_memory_usage_for_user 和 max_server_memory_usage 参数的限制。
& z  @8 q. Q; Z5 H& Z( @. C3 C) g/ D# n0 t8 t7 |; O7 C

/ o6 Z2 ]" S$ U, c, {; S
9 n0 T  L* O( x, V. O2.max_memory_usage_for_user/ f& a! G# e& N7 U
在单个服务器上运行用户查询时使用的最大内存容量。: v% Q) l0 P6 E
默认值在Settings.h中定义。默认情况下,该值不受限制(max_memory_usage_for_user = 0)。% j' x4 {5 a6 H' O- I0 A

8 `( k, x' K7 Q& n
+ i: T; g* V/ L4 u9 A" ~, k- _# @1 L) B' t# _* W
3.max_server_memory_usage
( P4 n" J; p5 ]' ]' ?内存使用总量限制。零表示无限制。& J+ j3 W0 `+ H/ U: L$ n' Z
默认的 max_server_memory_usage 值计算公式为:memory_amount * max_server_memory_usage_to_ram_ratio。
  f4 ?  n9 P  n6 ^
7 i4 A; c! }3 p& d6 F
1 p( Y# t# O  J' [  }0 U
1 s) Q2 d/ l: t6 f( k4.max_server_memory_usage_to_ram_ratio
! ]/ I' ^) b; `" U5 K与 max_server_memory_usage 相同,但与物理内存成比例。允许降低低内存系统的内存使用率。零表示无限制。
! f3 K$ Y9 |% |8 w+ m1 n* K在内存和交换容量较小的主机上,可能需要将 max_server_memory_usage_to_ram_ratio 设置得大于 1。0 表示可以使用所有可用内存。9 ^. a' [! C, U0 }! |+ }" q
默认配置:
$ k9 H) U3 V% @' `4 E2 t& |# ]5 \' v) }! q
& o$ m6 o7 V: W3 t1 v5 m
<max_server_memory_usage_to_ram_ratio>0.9</max_server_memory_usage_to_ram_ratio>$ M* Z9 ^- ]2 Y$ S& t
9 B& h1 X/ f" I3 N

" T5 j9 |% \& i& r1 [7 T/ G5.max_memory_usage_for_all_queries
! a$ ]! V: B" }9 c3 _* {0 e默认值是0,即不限制对内存的使用。9 F" r7 R- v& A. h0 }# l4 @6 R* g- X

7 P+ G, z8 \' d' J7 o9 ], {7 e  D" n+ v. ~1 F0 p
内存配置的官方建议
: n/ O7 T/ X  m2 D6 @3 I  S
, m2 y; V8 v2 L2 ~8 X
: d) {  _4 j) {( rhttps://clickhouse.com/docs/en/operations/tips0 |* N; A2 L& p, b6 ?' [
对于少量数据(压缩后不超过 ~200 GB),最好使用与数据量相同的内存。对于大数据量和处理交互式(在线)查询时,应使用合理的内存容量(128 GB 或更多),这样热数据子集才能放入页面缓存。即使每台服务器的数据量为 ~50 TB,使用 128 GB 内存也比使用 64 GB 内存能显著提高查询性能。" O. U4 C) n8 p( M, @8 ]1 S

! m+ A) w% w- H不要禁用overcommit。+ |1 [* f5 }# g2 A6 J" q
4 B) ]9 f4 B, u$ X9 \0 v
+ R  j1 z+ Q. L* U1 R
$ cat /proc/sys/vm/overcommit_memory 的值应为0或1) I  Y( p/ A9 R. a6 @7 f) c
运行; `5 ]: {. \( @0 K" s, }8 w/ r
; s" R* }4 t- @7 S! c( h0 p

: p) O, S& A# H# M$ echo 0 | sudo tee /proc/sys/vm/overcommit_memory
3 e2 i# P# O% o$ R  c如果系统内存不足 16GB,可能会出现各种内存异常,因为默认设置与内存容量不匹配。建议内存容量为 32GB 或更大。
& h2 A  |/ _7 a; k/ \' n/ H7 H- W" `2 \$ o* n, m6 V
 楼主| 发表于 2024-11-18 10:28:12 | 显示全部楼层

/ x! v% u; ]# `. ^' n- L! i, J# vim /etc/clickhouse-server/config.xml  y2 L9 a/ {  K9 O3 N1 _5 I% d
在这个
3 Y) q$ a) N+ x<yandex>/ C% ~2 o9 i, m- @. {' M; y5 e
</yandex>
9 g* W8 {& i  l3 i: u标签里配置:
1 _2 |& X0 Y3 c3 l( Z% |' V2 ], L/ e0 N+ \$ V% s; T
例如:2 G$ M! K6 F4 z6 j' a  V
<yandex>
( D) Z1 j6 l  z! A& t2 [        <!其他配置项 >
7 h; m/ r2 d9 ~# j# ]4 L    <profiles>
# I8 P( d0 Q( Q) d. k# d        <default>% S) x. C  N5 n" N9 B% G  b, U- J
            <max_memory_usage>8G</max_memory_usage>$ {' d: i. M# O7 n4 Q2 D6 V7 o1 n
        </default>
/ ^+ H; p0 [" V, z5 E    </profiles>
. `6 t3 j1 ?# g8 f# b' j    <!其他配置项 >( R, u% \" B, {: v5 k
</yandex>
 楼主| 发表于 2024-11-18 10:30:34 | 显示全部楼层
默认内存设置# o( {- K- P) v6 q9 M7 {, q& D

6 s; p# r1 y0 z8 N; o. oClickHouse默认为每个客户端分配8i(即8MB)的内存,而服务器总内存限制则为10g(即10GB),这意味着无论查询复杂性如何,每个客户端连接最多只能使用8MB的内存,而整个ClickHouse服务可用的内存总量被限制在10GB以内,这种设置在大多数情况下可以防止内存溢出,但在某些高负载或大数据分析场景下可能会限制性能。6 Y( v" R5 k" j9 S2 l' t8 ~
8 |  L$ G- C; w: Z
修改内存限制
$ s( a, x2 a; N4 V6 L( w8 \3 x  U9 }$ c
1. 配置文件修改
. O* A# X3 j( p- e9 _4 Z
' y" n8 \! w2 |+ x  w6 m4 T要修改ClickHouse的服务级别内存限制,首先需要编辑其配置文件,通常这个文件位于/etc/clickhouseserver/config.xml,您可以使用文本编辑器打开此文件:
. [6 l8 U0 `8 L5 s2 k  |5 U- k" S% g( j: L0 K  X! v
客户端8i 服务器10g_修改ClickHouse服务级别内存限制3 ^, E0 o1 H- Y
(图片来源网络,侵删), \0 X' {& u& X$ @  E$ }
<yandex>: c, e1 N: g' V) b6 Q
    <!其他配置项 >
# G* D6 ?1 |, O$ T0 d/ a3 q  ^    <profiles>
. D6 k4 M- x* R  p: `        <default>
" I. S) O; p$ R9 \2 e3 R            <max_memory_usage>12G</max_memory_usage>
7 M2 n+ W# x  O. k- ~$ q6 i; o& Z        </default>
' i5 `5 ~$ J) P4 b( i% P. Z    </profiles>! @5 A, O- ]8 D! s  E( y- s* l
    <!其他配置项 >
, x; C  B( O( p5 r7 [) g# D) ~</yandex>3 o) O1 ^; I% L' s- Y$ D
在这个例子中,我们将最大内存使用量从默认的10G修改为12G。
 楼主| 发表于 2024-11-18 17:11:48 | 显示全部楼层
<yandex>
9 ^0 I- y, s: [& q4 L) `2 z. w    <!其他配置项 >+ e0 Z) \, E) X
    <profiles>
) \3 Q! |1 z, k7 S3 j; _( y        <default>* ^, K( O. @) b- }& E
            <max_memory_usage>8G</max_memory_usage>! n/ n( S6 W- j2 i  k$ c3 }
        </default>
$ h- {5 e1 ]% P- b    </profiles>
/ l7 e5 M: H" t5 k6 C  W6 m    <!其他配置项 >. n1 y9 \3 v3 ?9 a) g% |
</yandex>  j  ?- E0 H6 k/ K

5 {: k0 ?# p8 D现在环境配置的
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

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

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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