- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
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
|
|