首页 > 其他分享 >clickhouse 异常提示 DB::Exception: Memory limit (total) exceeded

clickhouse 异常提示 DB::Exception: Memory limit (total) exceeded

时间:2024-11-03 12:19:21浏览次数:3  
标签:Exception max exceeded DB server 内存 memory usage user

新建的测试环境,内存比较少,登录后显示如下提示信息:

# clickhouse-client
ClickHouse client version 24.9.2.42 (official build).
Connecting to localhost:9000 as user default.
Password for user (default):
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 24.9.2.

cluster_1S_2R node 2 :) Cannot load data for command line suggestions: Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (total) exceeded: would use 7.72 GiB (attempt to allocate chunk of 4641312 bytes), current RSS 1.10 GiB, maximum: 6.96 GiB. OvercommitTracker decision: Query was selected to stop by OvercommitTracker.. (MEMORY_LIMIT_EXCEEDED) (version 24.9.2.42 (official build))


与内存设置相关的参数主要有:

·max_server_memory_usage
·max_server_memory_usage_to_ram_ratio
·max_memory_usage
·max_memory_usage_for_user


max_server_memory_usage
指定了clickhouse 可以使用的最大内存,默认值是 0。如果设置成 0 值或者没有设置,表示默认无限制。默认的 max_server_memory_usage 值计算公式为:

memory_amount * max_server_memory_usage_to_ram_ratio

 

max_server_memory_usage_to_ram_ratio
与 max_server_memory_usage 相同,但与物理内存成比例。零表示无限制。
如果设置成 0 ,表示无限制,默认值是 0.9。在内存和交换容量较小的主机上,可能需要将max_server_memory_usage_to_ram_ratio设置得大于 1。

 

max_memory_usage
表示在单个 clickhouse server 中运行一个查询可以使用的最大物理内存。
默认值是0,表示没有限制。
该参数的设置没有考虑可用内存或机器总内存的大小。限制只是应用于单个clickhouse server上的单个查询。可以使用SHOW PROCESSLIST查看每个查询的当前内存消耗。此外,每次查询的内存消耗峰值都会被跟踪并写入日志。
某些聚合函数的状态不会受到内存使用情况的监控。
对于来自字符串和数组参数的聚合函数min、max、any、anyLast、argMin、argMax 的状态,不完全跟踪内存使用情况。

 

max_memory_usage_for_user
在单个服务器上运行用户查询时使用的最大内存量。默认情况下,该值不做限制(max_memory_usage_for_user = 0)。
如果要将名为clickhouse_read 的用户的max_memory_usage_for_user设置为 1000 字节,可以使用语句

ALTER USER clickhouse_read SETTINGS max_memory_usage_for_user = 1000;


重新登录,然后使用getSetting函数来验证是否成功:

SELECT getSetting('max_memory_usage_for_user');

 

涉及的配置文件通常有两个,config.xml 和 users.xml。
其中 max_server_memory_usage 和 max_server_memory_usage_to_ram_ratio 位于配置文件 config.xml 中;max_memory_usage 和 max_memory_usage_for_user 位于配置文件 users.xml 中。

 

这里只是测试环境,虚拟机添加一些内存即可。

 

标签:Exception,max,exceeded,DB,server,内存,memory,usage,user
From: https://www.cnblogs.com/abclife/p/18522461

相关文章

  • +3.3V_Standby和+3.3V_Normal的关系
    +3.3V_Standby和+3.3V_Normal的关系+3.3V_Standby和+3.3V_Normal的区别+3.3V_Standby和+3.3V_Normal是两种不同的电压供应状态,它们通常用于描述电子设备中的电源管理。+3.3V_Normal是指设备在正常工作状态下,为芯片或电路提供的3.3V电压。这种电压通常用于支持设备的主要功能......
  • +3.3V_Standby和+3.3V_Normal的关系
    +3.3V_Standby和+3.3V_Normal的关系+3.3V_Standby和+3.3V_Normal的区别+3.3V_Standby和+3.3V_Normal是两种不同的电压供应状态,它们通常用于描述电子设备中的电源管理。+3.3V_Normal是指设备在正常工作状态下,为芯片或电路提供的3.3V电压。这种电压通常用于支持设备的主要功能......
  • JDBC连接mysql进行curd操作
    使用JDBC连接mysql数据库一.JDBC是什么JDBC(JavaDatabaseConnectivity)Java连接数据库的规范(标准),可以使用Java语言连接数据库完成CRUD操作。二.导入maven依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>......
  • GaussDB Ustore存储引擎解读
    GaussDBUstore存储引擎解读GaussDB是华为云推出的一款高性能数据库产品,其内核新增的Ustore存储引擎为企业级用户提供了更高性能的数据库服务。Ustore存储引擎,又名In-placeUpdate存储引擎(原地更新),是GaussDB内核新增的一种存储模式,旨在解决传统AppendUpdate(追加更新)行存储......
  • 记录一次大炮打蚊子的modbustcp通讯连接异常问题定位事件
    一.问题描述某种场景下,安装有Ubuntu22系统的设备A开机后,1-2min内设备E遥控器不能遥控设备A移动,之后恢复正常。二.设备组网设备A和设备C之间使用modbustcp协议进行通讯。三.首战3.1查看日志放开该端口的modbus查询帧日志打印,发现整体的帧格式,发现返回了modbus数据帧,但是返......
  • 一文搞懂JDBC全流程(含MySQL安装和JDK下载)
    前言:1.了解问题1:什么是JDBC?JDBC全称:JavaDatabaseConnectivity,即Java数据库连接JDBC是Java提供的一组独立于任何数据库管理系统的API。Java提供接口规范,由各个数据库厂商提供接口的实现,厂商提供的实现类封装成jar文件,也就是数据库驱动jar包。学习JDBC,充分体现了面向接口......
  • NoSQL数据库实习头歌实验知识点整理(二)-MongoDB部分
    文章目录1-1初识MongoDB1.1DOS(Windows)端启动MongoDB服务1.1.1配置环境变量1.1.2启动服务并进行相关配置1.2Linux端启动MongoDB服务1.2.1数据存放位置1.2.2日志文件1.2.3配置文件1.3启动客户端1.4退出客户端1.5关闭MongoDB服务1.5.1能连接到客户端时1......
  • 不写完整sql,DBeaver如何查询数据?效率翻倍!
    前言我们在使用DBeaver时,最常用的就是查询数据,除了在DBeaver里面直接写完整的sql语句进行查询外,其实还可以用不完整的sql语句来查询,效率翻倍。那么,我们该如何操作呢?如何操作首先,我们还是照旧打开某一张表的数据,这样默认是没有任何查询条件的。当我们需要按照一定的条件查询时,就......