执行sql报错4013,内存不足

【 使用环境 】 测试环境
【 OB or 其他组件 】
OceanBase数据库
【 使用版本 】
4.0.0
【问题描述】执行sql报错,Error 4013(HY001):No memory or reach tenant memory limit
怎么排查这个问题

用到的sql能发一下吗?

需要提供什么日志告诉我一下,现场部署了obdiag服务

你好,使用的sql是这个
UPDATE %s SET
pid = CASE WHEN ‘%s’ <> ‘’ THEN ‘%s’ ELSE pid END,
local_address = CASE WHEN ‘%s’ <> ‘’ THEN ‘%s’ ELSE local_address END,
process = CASE WHEN ‘%s’ <> ‘’ THEN ‘%s’ ELSE process END,
process_user = CASE WHEN ‘%s’ <> ‘’ THEN ‘%s’ ELSE process_user END,
agent_real_flag = 1,last_source_type = 3
WHERE ts = 1 AND uid = ‘%s’ AND port = %s ;

大佬,还有这两条
UPDATE hhit_asset_port SET
pid =’’,
local_address =’’,
process_user =’’,
agent_real_flag = 0
WHERE ts = 1 AND ip = ‘10.10.31.32’ AND agent_real_flag = 1;

INSERT INTO hhit_agent_process (start_user,path,ip,ip_long,ppid,status,run_cmd,port,update_time,pid,name) VALUES(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?),(?,?,IFNULL(?,’’),IF(?=’’,0,INET_ATON(?)),?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE start_user = VALUES( start_user ), path = VALUES( path ), ppid = VALUES( ppid ), status = VALUES( status ), run_cmd = VALUES( run_cmd ), port = VALUES( port ), update_time = VALUES( update_time ), pid = VALUES( pid ), name = VALUES( name );

日志里搜索4013错误码能搜到日志吗?或者搜No memory or reach tenant memory limit


好像有找到这样的报错

有找到4013的错误码

你的data数据盘是不是满了?

这里是指的配置文件中,datafile_size参数的值嘛。


专门放数据库数据的空间是没有满的

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000749282
调大租户内存或者调整ob_sql_work_area_percentage参数

把obdiag的巡检结果发一下吧,obdiag check

ob_sql_work_area_percentage怎么查看这个参数的值哈

obdiag check.txt (6.7 KB)
check_report_observer_2024-05-16-15-45-08.txt (27.1 KB)

没设置的话默认是5%

现在是不知道那个环境有没有改过

show variables like ‘%ob_sql_work_area_percentage%’;这个可以查看现在的参数

这个环境ob_sql_work_area_percentage配置的很大到70了

调大租户内存呢?

  ALTER resource unit unit_config_name min_cpu = 2,max_cpu = 2,MEMORY_SIZE = '2G',max_iops = 10000,min_iops = 10000;

使用的租户是sys