Halo Tech

Halo数据库管理-资源管理

     数据库运行过程中使用的公共资源包含:系统资源(CPU、内存、网络等)和数据库共享资源。作业运行过程中总是希望获得更多的公共资源,以获得最好的执行性能。但是公共资源的滥用可能导致数据库系统的不稳定,引发资源过载,影响高优业务的服务质量,甚至阻塞业务运行。因此,合理地管理和分配系统资源,是保证数据库系统稳定高效运行的关键。

资源管理的目标:

  • 防止资源过载,引发系统级故障;

  • 实现高优业务的优先调度,保证高优业务QoS;

  • 实现业务之间的资源隔离,防止业务之间资源争抢严重;

  • 实现业务的错峰分时调度,防止瞬时高并发影响系统稳定性;

  • 快速识别异常查询,保证正常业务稳定运行。

作为一款企业级数据库,羲和(Halo)数据库同样具备服务器资源管理分配的能力,通过合理限制数据库资源使用,达到稳定高效运行的目的。

1.限制 CPU 使用率

pg_pcpu_limit 的原理:为进程预设一个 cpu 占用率上限,并实时监控进程是否超出此上限值,若超出则让该进程暂停运行一段时间。pg_pcpu_limit使用 SIGSTOP 和 SIGCONT 这两个信号来控制进程。它不会修改进程的 nice 值,而是通过监控进程的 CPU 占用率来做出动态调整。

限制程序CPU使用率:

1) 指定PID号

# 限制PID 为21203 的程式其CPU 用量上限为50%

pg_pcpu_limit --pid 21203 --limit 50

2)指定程序的名称

pg_pcpu_limit --exe md5sum --limit 50

--pid是进程号

--limit是进程使用CPU百分比。

--exe是程序名称

CPU资源控制步骤

1)启动一个客户进程,cpu资源占满进程

打开hsql运行一个过程,代码如下

DECLARE

V_A NUMBER;

BEGIN

while(true)

loop

V_A := factorial(20000);

end loop;

END;

/

Image

查看CPU使用资源情况,使用命令top

Image

3)使用命令来限制CPU资源

pg_pcpu_limit -p 进程PID -l 使用率

Pg_pcpu_limit -p 1507281 -l 40

Image

4) 查看CPU使用资源情况,使用命令top

Image

2. 限制用户的连接数

创建用户,并限制。

create user test with password 'halo';

限制用户连接数。

alter user test connection limit 2;

连接到第3个会话,并且同时用用户test连接,会话连接不上会报错。

Image

3. 空闲时会话退出时长

idle_session_timeout

当一个会话连接长时间没有执行或者活动时,会将会话释放,可以释放缓存。

idle_session_timeout:默认值为0,表示禁用,其单位是毫秒。

alter system set idle_session_timeout=5000;

select pg_reload_conf();

show idle_session_timeout;

过5S后输入命令,就需要重连接。

Image