2021-10-18

数据库主机hang测试方案

针对客户主机hang死的现象,制定以下测试方案:
1、创建测试表空间
根据客户提供信息,测试系统共有4T可用存储。
测试使用的3个表结构相同,按"TEST"."HOST_CONNECTIVITY_TBL"表每分钟2000行、“TEST”."HOST_CPUUSAGE_TBL"表每分钟3000行、“TEST”."HOST_MEMORYUSAGE_TBL"表每分钟3000行的速度进行insert,每天共插入80006024=11520000行数据。
经过测试,以上3个表,每插入100000行数据需要69MB72MB表存储空间、32MB35MB索引存储空间,每天11520000行数据,按20%冗余,共需要11520000/100000721.2=9953.28MB表存储空间,11520000/100000351.2=4838.4MB索引存储空间,每天总共需要9953.28+4838.4=14,791.68MB存储空间。
create tablespace “TESTTBS” datafile ----创建512GB测试表空间,可满足至少30天测试
‘/根据实际情况填写/TESTTBS01.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS02.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS03.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS04.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS05.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS06.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS07.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS08.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS09.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS010.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS011.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS012.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS013.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS014.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS015.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS016.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS017.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS018.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS019.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS020.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS021.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS022.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS023.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS024.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS025.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS026.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS027.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS028.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS029.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS030.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS031.dbf’ size 16384 autoextend on maxsize UNLIMITED,
‘/根据实际情况填写/TESTTBS032.dbf’ size 16384 autoextend on maxsize UNLIMITED
CACHE = NORMAL;

2、创建测试用户
create user “TEST” identified by “******” hash with SHA512 password_policy 6
encrypt by “******”
limit failed_login_attemps 3, password_lock_time 1, password_grace_time 10
default tablespace “TESTTBS”
default index tablespace “TESTTBS”;

3、创建测试表
CREATE TABLE “TEST”.“HOST_CONNECTIVITY_TBL”
(
“ID” VARCHAR(100) NOT NULL,
“DEVID” VARCHAR(50),
“DEVORG” VARCHAR(32),
“INDEXVALUE” VARCHAR(20),
“CREATEDATE” DATETIME(6),
“SAVEDATE” DATETIME(6),
CLUSTER PRIMARY KEY(“ID”)) STORAGE(ON “TESTTBS”, CLUSTERBTR) ;

CREATE INDEX “HOST_CONNECTIVITY_TBL_ID_INDEX” ON “TEST”.“HOST_CONNECTIVITY_TBL”(“DEVID” ASC,“CREATEDATE” ASC) STORAGE(ON “TESTTBS”, CLUSTERBTR) ;

CREATE TABLE “TEST”.“HOST_CPUUSAGE_TBL”
(
“ID” VARCHAR(100) NOT NULL,
“DEVID” VARCHAR(50),
“DEVORG” VARCHAR(32),
“INDEXVALUE” VARCHAR(20),
“CREATEDATE” DATETIME(6),
“SAVEDATE” DATETIME(6),
CLUSTER PRIMARY KEY(“ID”)) STORAGE(ON “TESTTBS”, CLUSTERBTR) ;

CREATE INDEX “HOST_CPUUSAGE_TBL_ID_INDEX” ON “TEST”.“HOST_CPUUSAGE_TBL”(“DEVID” ASC,“CREATEDATE” ASC) STORAGE(ON “HOST_CPUUSAGE_TBL”, CLUSTERBTR) ;

CREATE TABLE “TEST”.“HOST_MEMORYUSAGE_TBL”
(
“ID” VARCHAR(100) NOT NULL,
“DEVID” VARCHAR(50),
“DEVORG” VARCHAR(32),
“INDEXVALUE” VARCHAR(20),
“CREATEDATE” DATETIME(6),
“SAVEDATE” DATETIME(6),
CLUSTER PRIMARY KEY(“ID”)) STORAGE(ON “TESTTBS”, CLUSTERBTR) ;

CREATE INDEX “HOST_MEMORYUSAGE_TBL_ID_INDEX” ON “TEST”.“HOST_MEMORYUSAGE_TBL”(“DEVID” ASC,“CREATEDATE” ASC) STORAGE(ON “HOST_CPUUSAGE_TBL”, CLUSTERBTR) ;

4、创建定时任务
在manager管理工具中依次点击“代理->作业->新建作业”,

填写作业名称

点击“作业步骤->添加”

填写作业步骤脚本

脚本内容如下(直接复制粘贴即可):
insert into “TEST”.“HOST_CONNECTIVITY_TBL”
select dbms_random.string(‘x’, 50) ||sys_guid() ,
dbms_random.string(‘x’, 50),
dbms_random.string(‘x’, 32) ,
dbms_random.string(‘x’, 20),
sysdate,
sysdate
from dual
connect by level <= 2000;

COMMIT;
insert into “TEST”.“HOST_CPUUSAGE_TBL”
select dbms_random.string(‘x’, 50) ||sys_guid() ,
dbms_random.string(‘x’, 50) ,
dbms_random.string(‘x’, 32) ,
dbms_random.string(‘x’, 20),
sysdate,
sysdate
from dual
connect by level <= 3000;
commit;

insert into “TEST”.“HOST_MEMORYUSAGE_TBL”
select dbms_random.string(‘x’,50) ||sys_guid() ,
dbms_random.string(‘x’, 50) ,
dbms_random.string(‘x’, 32) ,
dbms_random.string(‘x’, 20),
sysdate,
sysdate
from dual
connect by level <= 3000;
commit;
点击“作业调度->新建”

填写作业调度详细信息如下:

也可以在disql或manager中执行以下脚本完成定时任务创建:
call SP_CREATE_JOB(‘insert_test’,1,0,’’,0,0,’’,0,’’);

call SP_JOB_CONFIG_START(‘insert_test’);

call SP_ADD_JOB_STEP(‘insert_test’, ‘insert_test’, 0, ‘insert into “TEST”.“HOST_CONNECTIVITY_TBL”
select dbms_random.string(’‘x’’, 50) ||sys_guid() ,
dbms_random.string(’‘x’’, 50),
dbms_random.string(’‘x’’, 32) ,
dbms_random.string(’‘x’’, 20),
sysdate,
sysdate
from dual
connect by level <= 2000;

COMMIT;
insert into “TEST”.“HOST_CPUUSAGE_TBL”
select dbms_random.string(’‘x’’, 50) ||sys_guid(),
dbms_random.string(’‘x’’, 50) ,
dbms_random.string(’‘x’’, 32) ,
dbms_random.string(’‘x’’, 20),
sysdate,
sysdate
from dual
connect by level <= 3000;
commit;

insert into “TEST”.“HOST_MEMORYUSAGE_TBL”
select dbms_random.string(’‘x’’, 50) ||sys_guid() ,
dbms_random.string(’‘x’’, 50) ,
dbms_random.string(’‘x’’, 32) ,
dbms_random.string(’‘x’’, 20),
sysdate,
sysdate
from dual
connect by level <= 3000;
commit;’, 0, 0, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE(‘insert_test’, ‘insert_test_sch’, 1, 1, 1, 0, 1, ‘00:00:00’, ‘23:59:59’, ‘2021-09-05 23:46:27’, NULL, ‘’);

call SP_JOB_CONFIG_COMMIT(‘insert_test’);

5、检查定时任务执行情况
select
(select count(1) from “TEST”.“HOST_CONNECTIVITY_TBL”)+
(select count(1) from “TEST”.“HOST_MEMORYUSAGE_TBL”)+
(select count(1) from “TEST”.“HOST_CPUUSAGE_TBL”) from dual; ----------------每次钟执行结果比上一分钟的结果多8000

6、检查存储空间
查看数据库页大小:

查询空闲空间:
select sum(a.FREE_SIZE)*32/1024/1024,sum(a.TOTAL_SIZE)*32/1024/1024 from v d a t a f i l e a , v datafile a,v datafilea,vtablespace b where b.NAME = ‘TESTTBS’ and b.id = a.GROUP_ID;

7、修改操作系统sysstat采集时间间隔
将/etc/cron.d/sysstat中的:
*/10 * * * * root /usr/lib64/sa/sa1 1 1 ----默认10分钟采集一次
修改为
*/1 * * * * root /usr/lib64/sa/sa1 1 1 ----修改为1分钟采集一次
修改后sysstat采集间隔将从10分钟采集一次,变为1分钟采集一次,因此生成的日志量增加10倍,需要提前检查空间:
df -h
du -sh /var/log

8、内存commit%达到200的情况
针对操作系统厂商提出的内存commit%达到200的情况,需要定时采集进程请求内存的总量:
df -h ------------检查磁盘空间
echo “*/1 * * * * root ps aux --sort=-vsz | head -n 10 >> ~/vsz.log” >> /etc/crontab —生成定时任务
以上命令每分钟采集内存申请排名前10的进程,将信息写入~/vsz.log文件

9、其他需要采集的信息
1、将/var/log目录打包
Sysstat信息默认保存7天,需要在问题出现后的7天内保留相关日志
df -h --------------检查磁盘空间
tar -zcvf ~/alllog.tar.gz /var/log --------------打包日志信息
2、dm数据库相关日志
DM 数据库系统在运行过程中,会在 log 子目录下产生一个“dm_实例名_日期”命名的
事件日志文件。

10、检查glibc版本

rpm -qi glibc | grep Version ----------检查glibc版本
env | grep malloc_arena_max ----------检查线程内存分配相关参数
set | grep malloc_arena_max
社区地址:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值