如何进行oracle capability i/o(压力测试数据库服务器i/o性能)
一 、oracle 有关 IO 信息的相关统计函数
Oracle i/o stack包含hbas,存储相关的交换机、存储物理磁盘。那么oracle建议在应用程序部署的时候,建议去验证i/o避免存在问题。但是之前有一个很刺手的问题,那就是如何去验证i/o侧吞吐量,换句话说怎么去验证i/o吞吐量更符合真实的生产环境。
In Oracle Database 11g, the Real Application Testing feature (Capture/Replay) was introduced to inject real (captured) workload into the system. However, another new 11g feature is available to help assess the I/O capability of the database's storage system, and gauge maximum IOPS and Mbytes/s.
oracle 针对io评估的说明
capability i/o feature 是依据一个数据库内部的函数(dbms_resource_manager.calibrateio()),该函数是oracle database内部集成的,更能满足测试i/o问题,且在最后将输出相关报告信息。
执行这个包需要注意什么呢?
1、权限,必须具有sysdba执行该过程的权限,另外需要打开timed_statistics。
2、确定异步i/o在数据库的所有数据文件和临时文件都已经得到应用启动,我们可以通过v$datafile 和v$iostat_file视图关联进行、确认。
col name format a50
select name,asynch_io from v$datafile f,v$iostat_file i
where f.file#=i.file_no
and (filetype_name='Data File' or filetype_name='Temp File');
确认所需文件是否已经启动
如果异步i/o没有启动,设置disk_asynch_io=true启动该功能,但默认是开启的,如果在linux中最大slots使用完毕,那么将自动关闭噶 功能,这也就是为什么虽然设置了disk_asynch_io=true了却依然没有达到效果。最大的slots可以查看/proc/sys/fs/aio-max-nr 当前使用的可以查看/proc/sys/fs/aio-nr去分别确认。
3、确保服务器只有需要测试的数据库开启,避免 其他应用软件的影响。
4、对于RAC,需要确保所有的实例都开启,因为 将会对所有节点做全面的校对,执行该过程只需在一个实例即可。
5、确保只有一个用户执行一个校对i/o的操作。可以通过v$io_calibration_status查看当前鉴定状态。
另外查看资料了解到有这么几个过程:
The calibration will run in different phases. In the first phase, small block random I/O workload is performed on each node and then concurrently on all nodes. The second phase will generate large block sequential I/O on each node. Note, that the Calibrate I/O is expecting that a datafile is spread across all disks specified in NUM_DISKS variable. Furthermore, offline files are not considered for file I/O.
oracle 官方英文说明
一旦执行完毕,其结果将存在于dba_rsrc_io_calibrate表中。了解到这些,下面开始去实验操作。让实践得真知。
- 语法如下:
SET SERVEROUTPUT ON
DECLARE
lat INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
-- DBMS_RESOURCE_MANAGER.CALIBRATE_IO (<DISKS>, <MAX_LATENCY>, iops, mbps, lat);
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (2, 10, iops, mbps, lat); DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops);
DBMS_OUTPUT.PUT_LINE ('latency = ' || lat);
DBMS_OUTPUT.PUT_LINE ('max_mbps = ' || mbps);
end;
/
语法:查询I0信息的SQL
- 参数介绍如下:
Parameter Description
num_physical_disks
Approximate number of physical disks in the database storage(物理磁盘个数 input) max_latency
Maximum tolerable latency in milliseconds for database-block-sized IO requests(最大可用容忍延迟的毫秒数 input) max_iops
Maximum number of I/O requests per second that can be sustained. The I/O requests are randomly-distributed, database-block-sized reads.(持续中每秒请求最大i/o的数量 output) max_mbps
Maximum throughput of I/O that can be sustained, expressed in megabytes per second. The I/O requests are randomly-distributed, 1 megabyte reads.(持续中最大的吞吐量M为单位) actual_latency
Average latency of database-block-sized I/O requests at max_iops rate, expressed in milliseconds(平均延迟)
SQL参数说明
二、测试
- 测试场景说明:
环境为oracle linux 6.4 +database 11.2.0.4(RAC 2节点 )+asm 11.2.0.4
对了,另外如果数据库使用的是asm,那么如果验证的死数据文件需要使用datadg中的所有物理磁盘,而不是fra中的物理磁盘。虽然我使用存储化的lun进行的映射,但是 num_physical_disks必须是真实物理磁盘个数,因为是测试是一个磁盘,那么这个参数为1。
2.1、验证是否启动async i/o
[oracle@rac-one ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon Apr 21 22:35:23 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options SQL> show parameter disk_asynch_io(查看数据库是否启用了异步i/o) NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
disk_asynch_io boolean TRUE
SQL> !
[oracle@rac-one ~]$ more /proc/sys/fs/aio-max-nr (系统slots最大数量)
1048576
[oracle@rac-one ~]$ more /proc/sys/fs/aio-nr (当前使用的slots)
23680
[oracle@rac-one ~]$ exit
exit SQL> col name for a50
SQL> set linesize 200
SQL> select name,asynch_io from v$datafile f,v$iostat_file i where f.file#=i.file_no and (filetype_name='Data File' or filetype_name='Temp File'); -------------(查看启用了async的文件信息) NAME ASYNCH_IO
-------------------------------------------------- ---------
+DATADG/rac/datafile/system.262.839537769 ASYNC_ON
+DATADG/rac/datafile/system.262.839537769 ASYNC_ON
+DATADG/rac/datafile/sysaux.263.839537911 ASYNC_ON
+DATADG/rac/datafile/undotbs1.264.839538031 ASYNC_ON
+DATADG/rac/datafile/undotbs2.266.839538155 ASYNC_ON
+DATADG/rac/datafile/users.267.839538199 ASYNC_ON 6 rows selected.
查看是否启动异步i/o
2.2、验证开始
SQL> set serveroutput on
SQL> declare
lat integer;
iops integer;
mbps integer;
begin
--dbms_resource_manager.calibrate_io(<num_disks>,<max_latency>,iops,mbps,lat);
dbms_resource_manager.calibrate_io(1,10,iops,mbps,lat);
dbms_output.put_line('max_iops=' || iops);
dbms_output.put_line('latency=' || lat);
dbms_output.put_line('max_mbps=' || mbps);
end;
/
开始验证i/o:
2.3、验证结果
SQL> declare
lat integer;
iops integer;
mbps integer;
begin
--dbms_resource_manager.calibrate_io(<num_disks>,<max_latency>,iops,mbps,lat);
dbms_resource_manager.calibrate_io(1,10,iops,mbps,lat);
dbms_output.put_line('max_iops=' || iops);
dbms_output.put_line('latency=' || lat);
dbms_output.put_line('max_mbps=' || mbps);
end;
/
max_iops=45
latency=42
max_mbps=12 PL/SQL procedure successfully completed.
结果:
如何进行oracle capability i/o(压力测试数据库服务器i/o性能)的更多相关文章
- JMeter压力测试及服务器状态监控教程
转载自:https://blog.csdn.net/cbzcbzcbzcbz/article/details/78023327 前段时间公司需要对服务器进行压力测试,包括登录前的页面和登录后的页面,主 ...
- 使用apache 的 ab命令压力测试nginx服务器
nginx压力测试方法: #ab命令 #安装ab #Centos系统 yum install apr-util #Ubuntu系统 sudo apt-get install apache2-utils ...
- Jmeter压力测试笔记(6)性能调测-压力并发-模拟生产环境数据
问题原因找到了,那就好办了. 找到阿里云技术人员,让他们强行给我们上架了一个共享代理模式的Redis. 并重新进行压力测试. 哦豁~ 开心,压力测试顺利,异常率大大降低实际为: 数据库DBA反馈,数据 ...
- oracle capability i/o(压力測试数据库serveri/o性能)
今天是2014-04-21,今天简单仅仅说明一下怎么影响重做数据的一个因素,那就是i/o吞吐量,oracle的介质恢复依赖于i/o,假设i/o存在瓶颈,那么势必会影响备库的介质恢复. 那么i/o st ...
- sysbench 压力测试工具
一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL. ...
- j2ee性能调优之最小化资源压力测试法则
前面看到有人讲j2ee的性能调优,虽然这块不是自己的专长,但是猪养多了,也忍不住跳出来说几句. 虽然几乎每本讲性能调优的书籍开篇都会提,没必要的情况下就不要做调优,但是我个人还是认为,所有系统在上线前 ...
- 【转帖】sysbench压力测试工具简介
sysbench压力测试工具简介 https://www.cnblogs.com/pdlife/p/6698957.html 一.sysbench压力测试工具简介: sysbench是一个开源的.模块 ...
- sysbench压力测试工具简介
一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL. ...
- [数据库]000 - 🍳Sysbench 数据库压力测试工具
000 - Sysbench 数据库压力测试工具 sysbench 是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有 ...
随机推荐
- 如何运用inno在安装和卸载时提示用户结束进程?
我尝试着写了一段,但是卸载段存在问题,请指点! CODE [Files]Source: ISTask.dll; DestDir: {app}; Flags: ignoreversion [Code]f ...
- 学习方法和阶段介绍 、 iOS界面开发引入 、 构造第一个App 、 视图控制器和视图 、 控件与事件 、 InterfaceBuilder
1 创建并运行第一个App 1.1 问题 使用Xcode创建一个App项目,该应用实现功能在界面上显示Hello World标签,在模拟器中的运行结果如图-1所示: 图-1 1.2 方案 分析图-1, ...
- iOS开发环境C语言基础 数组 函数
1 求数组元素的最大值 1.1 问题 创建程序,实现查询数组中最大值的功能,需求为:创建一个长度为10的数组,数组内放置10个0~99之间(包含0,包含99)的随机数作为数组内容,要求查询出数组中的最 ...
- 基于 OpenSSL 的 CA 建立及证书签发 【转】
建立 CA 建立 CA 目录结构 按照 OpenSSL 的默认配置建立 CA ,需要在文件系统中建立相应的目录结构.相关的配置内容一般位于 /usr/ssl/openssl.cnf 内,详情可参见 c ...
- Note Pad++ 关闭语法错误时在代码下面的红线标识
菜单栏 —- 插件 —- DSpellCheck . 将勾去掉即可
- JS中onpropertychange和onchange事件区别小结
当一个HTML元素的属性用js改变的时候,都能通过onpropertychange来捕获.例如一个文本text对象的value属性被页面的脚本修改的时候,onchange无法捕获到,而onproper ...
- JQuery中操作Css样式
//1.获取和设置样式 $("#tow").attr("class")获取ID为tow的class属性 $("#two").attr(&qu ...
- Protobuf C/C++实战笔记(1)
前言: Protobuf作为数据交换格式, 被很多人喜欢. 数据压缩比高, 向后兼容性强, 性能优异, 而且对平台中性, 支持多语言(C/C++, JAVA, Python). 优点太多, 实在不胜枚 ...
- Welcome to MacJournal!
Welcome to MacJournal 6 To get started, create a new entry by clicking on "New Entry" in t ...
- CSS基础知识点(二)——居中
水平居中 (1) 对于块级元素,最常用的自适应水平居中为:margin:0px auto; (与 margin:auto; 效果相同) (2) 对于行内元素(a, img, input等),最常用的水 ...