SwingBench 字符模式压测最佳实践
2021-07-13 15:07
标签:opera 必须 wait 调优 soft sage start res imp 之前写过《使用SwingBench 对Oracle RAC DB性能 压力测试》,使用的是最基础直观的图形模式,已经可以满足大多数需求。 但是在有些场景下,图形模式可能本身消耗资源过大,尤其在生成大量测试数据时,很可能会由于图形本身的不稳定导致卡死甚至直接中途退出,严重影响效率和测试体验。 之前使用图形界面时,我们直接去执行 ./oewizard 即可调用图形界面按照提示一步步配置最终生成压力测试的数据。 而使用字符模式,则需要指定参数配置文件以及一些必要的参数,先来看都有哪些参数: 实际我这里测试,用到的参数有 -cl, -create, -c, -scale, -tc, -part 而关于oewizard.xml 这个配置文件,我只改了下面这部分的内容,其他保持不变: 主要就是确认压测用户及密码,以及数据文件的创建位置、数据库连接字符串、数据库sys用户及密码这些项。 确认无误后,我这里由于生成的数据量很大,裸数据就150G,这还不算索引。所以采用后台执行的方式,并在执行前后记录一个时间: 最终花了将近4小时才生成完毕: 事实证明我在执行开始和结束的地方加的这个时间,有些多此一举了哈,人家软件有统计Total Run Time。 使用图形模式,就是直接执行 ./swingbench 然后配置完成后进行压力测试直接可以直观显示类似下面这样的压测结果: 而最重要的xml配置文件如果手动编辑就更是很苦恼的一件事,同样利用技巧,图形调用后配置好各参数然后另存为导出一份xml配置即可。 可以看到,我这里测试的50个用户[50/50]很快连接上,之后CPU的信息有4列(User, System, Wait, Idle),I/O的信息(Bi, Bo)有两列,最后三列(TPM, TPS, Response)就分别是每分钟事物量、每秒种事物量、响应时间。 SwingBench 字符模式压测最佳实践 标签:opera 必须 wait 调优 soft sage start res imp 原文地址:https://www.cnblogs.com/jyzhao/p/9568806.html
而如果采用静默模式,直接使用xml编辑又不能很好的确认改的是否正确。
本文主要介绍下我在做某次压力测试时发现的小技巧。
1.生成压测数据
[oracle@db50 bin]$ ./oewizard -h
usage: parameters:
-allindexes build all indexes for schema
-bigfile use big file tablespaces
-c
其中-cl, -create是必须的;-c是指定某个xml配置文件,-scale是指纯数据量(是默认1G配置的多少倍),-tc是指并行度,-part是指分区。./oewizard -cl -create -c oewizard.xml -scale 150 -tc 64 -part
而技巧就是,如果不确认自己的配置文件写的正确与否,可以先这样执行,带入对应的参数,调用图形走一遍check下所有配置:./oewizard -c oewizard.xml -scale 150 -tc 64 -part
--1.生成压测数据脚本
$ cat test150.sh
date
echo "=====Begin====="
./oewizard -cl -create -c oewizard.xml -scale 150 -tc 64 -part
echo "=====End====="
date
--2.后台执行,输出日志
nohup sh test150.sh > test150.log &
--3.跟踪日志输出
tail -20f test150.log
[oracle@yzdb1 bin]$ tail -20f test150.log
Fri Aug 31 10:52:54 CST 2018
=====Begin=====
SwingBench Wizard
Author : Dominic Giles
Version : 2.5.0.971
Running in Lights Out Mode using config file : oewizard.xml
============================================
| Datagenerator Run Stats |
============================================
Connection Time 0:00:00.005
Data Generation Time 3:41:44.395
DDL Creation Time 0:09:00.405
Total Run Time 3:50:44.809
Rows Inserted per sec 136,446
Data Generated (MB) per sec 10.9
Actual Rows Generated 1,816,220,694
Post Creation Validation Report
===============================
The schema appears to have been created successfully.
Valid Objects
=============
Valid Tables : ‘ORDERS‘,‘ORDER_ITEMS‘,‘CUSTOMERS‘,‘WAREHOUSES‘,‘ORDERENTRY_METADATA‘,‘INVENTORIES‘,‘PRODUCT_INFORMATION‘,‘PRODUCT_DESCRIPTIONS‘,‘ADDRESSES‘,‘CARD_DETAILS‘
Valid Indexes : ‘PRD_DESC_PK‘,‘PROD_NAME_IX‘,‘PRODUCT_INFORMATION_PK‘,‘PROD_SUPPLIER_IX‘,‘PROD_CATEGORY_IX‘,‘INVENTORY_PK‘,‘INV_PRODUCT_IX‘,‘INV_WAREHOUSE_IX‘,‘ORDER_PK‘,‘ORD_SALES_REP_IX‘,‘ORD_CUSTOMER_IX‘,‘ORD_ORDER_DATE_IX‘,‘ORD_WAREHOUSE_IX‘,‘ORDER_ITEMS_PK‘,‘ITEM_ORDER_IX‘,‘ITEM_PRODUCT_IX‘,‘WAREHOUSES_PK‘,‘WHS_LOCATION_IX‘,‘CUSTOMERS_PK‘,‘CUST_EMAIL_IX‘,‘CUST_ACCOUNT_MANAGER_IX‘,‘CUST_FUNC_LOWER_NAME_IX‘,‘ADDRESS_PK‘,‘ADDRESS_CUST_IX‘,‘CARD_DETAILS_PK‘,‘CARDDETAILS_CUST_IX‘
Valid Views : ‘PRODUCTS‘,‘PRODUCT_PRICES‘
Valid Sequences : ‘CUSTOMER_SEQ‘,‘ORDERS_SEQ‘,‘ADDRESS_SEQ‘,‘LOGON_SEQ‘,‘CARD_DETAILS_SEQ‘
Valid Code : ‘ORDERENTRY‘
Schema Created
=====End=====
Fri Aug 31 14:43:42 CST 2018
2.进行压力测试
使用字符的话,就需要调用 ./charbench ,有效的参数如下:[oracle@db50 bin]$ ./charbench -h
usage: parameters:
-D
比如导出的xml配置文件是模拟的2000并发的OLTP类型业务,文件名取为oltp2000.xml
那么字符测试就可以直接调用:--简单的只看事物量
[oracle@db50 bin]$ ./charbench -c oltp2000.xml
--指定其中一台机器登陆信息,同时看到这台机器的CPU和I/O负载情况,以及响应时间
[oracle@db50 bin]$ ./charbench -c oltp2000.xml -cpuloc db50 -cpuuser oracle -cpupass oracle -v ‘users,cpu,disk,tpm,tps,resp‘ > oltp2000_load50.log
[oracle@db50 bin]$ ./charbench -c oltp2000.xml -cpuloc db52 -cpuuser oracle -cpupass oracle -v ‘users,cpu,disk,tpm,tps,resp‘ > oltp2000_load52.log
--准生产的数据当时没有留存,这里就用我实验环境的数据(50并发)简单说明下:
[oracle@db50 bin]$ tail -20f oltp2000_load50.log
Author : Dominic Giles
Version : 2.5.0.971
Results will be written to results.xml.
Hit Return to Terminate Run...
Time Users User System Wait Idle Bi Bo TPM TPS Response
23:19:30 [0/50] 0 0 0 0 0 0 0 0 0
23:19:33 [0/50] 0 0 0 0 0 0 0 0 0
23:19:34 [0/50] 11 22 2 65 19 2194 0 0 0
23:19:35 [0/50] 27 44 0 28 155 1514 0 0 0
23:19:36 [0/50] 8 24 1 67 31 1593 0 0 0
23:19:37 [12/50] 5 27 2 65 56 2626 0 0 0
23:19:38 [35/50] 6 11 1 82 39 1152 0 0 0
23:19:39 [50/50] 8 20 2 71 23 2802 0 0 0
23:19:40 [50/50] 16 33 0 51 820 1218 43 43 233
23:19:41 [50/50] 26 73 1 0 1780 580 161 118 390
23:19:42 [50/50] 45 54 1 0 1833 658 264 103 393
23:19:43 [50/50] 36 63 1 0 1959 655 384 120 361
23:19:44 [50/50] 25 75 0 0 1999 703 487 103 366
23:19:45 [50/50] 33 66 1 0 1611 588 563 76 380
23:19:46 [50/50] 46 53 1 0 1727 724 650 87 384
23:19:47 [50/50] 35 64 1 0 1607 694 766 116 376
23:19:48 [50/50] 30 69 1 0 1587 596 852 86 382
23:19:49 [50/50] 31 68 1 0 2227 629 945 93 380
23:19:50 [50/50] 46 54 0 0 2611 689 1034 89 385
23:19:51 [50/50] 35 64 1 0 1763 626 1127 93 385
23:19:52 [50/50] 22 76 2 0 2276 825 1248 121 379
23:19:53 [50/50] 29 70 1 0 2195 787 1378 130 371
23:19:54 [50/50] 43 55 2 0 2075 767 1490 112 365
23:19:55 [50/50] 39 61 0 0 1827 965 1617 127 359
23:19:56 [50/50] 29 71 0 0 1951 646 1715 98 360
23:19:57 [50/50] 37 63 0 0 1611 946 1799 84 365
23:19:58 [50/50] 45 55 0 0 1671 834 1912 113 366
23:19:59 [50/50] 34 66 0 0 1867 705 2023 111 362
23:20:00 [50/50] 39 61 0 0 2235 889 2137 114 358
23:20:01 [50/50] 40 60 0 0 1931 859 2245 108 357
23:20:02 [50/50] 36 64 0 0 1866 892 2362 117 355
23:20:03 [50/50] 38 62 0 0 2758 734 2450 88 353
23:20:04 [50/50] 42 58 0 0 3191 913 2539 89 351
23:20:05 [50/50] 47 53 0 0 2451 935 2636 97 352
23:20:06 [50/50] 48 52 0 0 2059 652 2725 89 350
23:20:07 [50/50] 42 58 0 0 2575 995 2802 77 348
23:20:08 [50/50] 42 58 0 0 2295 658 2868 66 355
当然了我这里的这个测试环境由于配置很低,且没有做专门的调优,测出的性能数据不是很好看了,只是演示用~