如何进行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

[[email protected] ~]$ 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> !
[[email protected] ~]$ more /proc/sys/fs/aio-max-nr (系统slots最大数量)
1048576
[[email protected] ~]$ more /proc/sys/fs/aio-nr (当前使用的slots)
23680
[[email protected] ~]$ 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.

结果:

时间: 2024-12-21 04:38:30

如何进行oracle capability i/o(压力测试数据库服务器i/o性能)的相关文章

jmeter 压力测试

一.什么是压力测试 压力测试:测试系统在不同压力情况下的效率状况以及系统可以承受的压力状况. 举例说明:5000人同时到窗帘系统下单购买窗帘时,系统运行速度或者处理效率是否变慢或者系统是否会崩溃. 二.压力测试工具 1. LoadRunner LoadRunner,是一种预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试.通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速

sysbench压力测试工具简介

一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL.Oracle和PostgreSQL.以下操作都将以支持MySQL数据库为例进行. 1.      sysbench工具安装: 默认支持MySQL,如果需要测试Oracle/PostgreSQL,则在configure时需要加上–with-oracle或者–with-pgsql参数. 1.1     

如何做云端压力测试和业务容量的测试与规划

云智慧产品总监 陆兴海 高速增长的互联网业务要求产品开发.迭代和交付周期越来越短,而IT基础设施的广泛云化和第三方API接口的大量使用,使传统的基于内部环境搭建的压力测试方法和测试工具越来越难以满足应用功能可用和容量规划预估的需求. 企业该如何为频繁的市场活动和产品快速迭代进行有效而准确的压力测试呢?希望通过云端压力测试专家,云智慧压测宝产品总监陆兴海分享的两个客户案例,为企业的云端压力测试和业务容量规划带来一些有价值的参考. 压测宝云压测客户案例1:压测宝如何做业务容量的测试与规划? 云智慧有

用mysql自带工具mysqlslap对数据库进行压力测试

mysqlslap是mysql自带的工具,不需要单独安装: 参数: -concurrency 代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是10.50.100个并发. --engines 代表要测试的引擎,可以有多个,用分隔符隔开. --iterations 代表要运行这些测试多少次. --auto-generate-sql 代表用系统自己生成的SQL脚本来测试. --auto-generate-sql-load-type 代表要测试的是读还

Visual Studio 单元测试之三---压力测试

原文:Visual Studio 单元测试之三---压力测试 我们都知道大名鼎鼎的LoadRuner,但是很少有人知道Visual Studio自带的Test也可以做些简单的压力测试,下面我们就介绍一下如何利用Visual Studio进行压力测试. 此文是上一篇博文:Visual Studio 单元测试之一---普通单元测试的后续篇章.如果读者对Visual Studio的单元测试不熟悉的话,请先参看上一篇.http://blog.csdn.net/tjvictor/archive/2011/

(转)用mysql自带工具mysqlslap对数据库进行压力测试

http://aolens.blog.51cto.com/7021142/1901557-------用mysql自带工具mysqlslap对数据库进行压力测试 mysqlslap是mysql自带的工具,不需要单独安装: 参数: -concurrency 代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是10.50.100个并发. --engines 代表要测试的引擎,可以有多个,用分隔符隔开. --iterations 代表要运行这些测试多少次

微信公众号朋友圈压力测试

压力测试 详情页承载了朋友圈广告的主要内容,为保障用户的良好体验,需要对详情页所在服务器进行压力测试. 服务器部署及分类 详情页可以选择部署在腾讯服务器或广告主自己的服务器: 若广告主把详情页面部署到自己的服务器,即广告主选择了外链页面,用户在点击"查看详情"之后即会跳转到广告主自己的服务器.此种情况称为第一次跳转: 详情页若部署到腾讯服务器时,要求详情页所需要的相关资源都部署在腾讯服务器上,不允许任何资源(包含静态页面,服务接口等)部署在非腾讯服务器上.但是允许详情页中有链接跳转到广

记一次接口压力测试与性能调优

〇.经验总结 1.如果总的CPU占用率偏高,且基本都被业务线程占用时,CPU占用率过高的原因跟JVM参数大小没有直接关系,而跟具体的业务逻辑有关.2.当设置JVM堆内存偏小时,GC频繁会导致业务线程停顿增多,TPS下降,最后CPU占用率也低了:3.当设置JVM堆内存偏大时,GC次数下降,TPS上升,CPU占用率立刻上升.4.Dom4J 这个xml解析工具性能很强大,但在处理节点和层级都较多的xml文本时,整体解析效率依然会成为业务处理瓶颈. 一.背景说明 最近新项目上线,需要对项目中的一个HTT

apache bench Web压力测试

一.ab工具简介ab全称为:apache bench 网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环.只有让服务器处在高压情况下,才能真正体现出软件.硬件等各种设置不当所暴露出的问题. 性能测试工具目前最常见的有以下几种:ab.http_load.webbench.siege.今天我们专门来介绍ab. ab是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试.比如nginx.tomcat.IIS等.