TPC-C測試
TPC-C 於 1992 年 7 月 23 日認可為新的基准測試。TPC(Transaction Processing Performance Council,事務處理性能委員會)-C是衡量聯機事務處理(OLTP,Online TransactionProcessing)系統的工業標准,是行業中公認的權威和最為復雜的在線事務處理基准測試。它通過模擬倉庫和訂單管理系統,測試廣泛的數據庫功能,包括查詢、更新和 mini-batch事務(隊列式小批量事務)。TPC-C基准測試針對一種模擬訂單錄入與銷售環境測量每分鍾事務(tpmC-transactions per minute)吞吐量。
Ø 標准測試模擬的程序環境
測試用到的模型是一個大型的批發銷售公司,在地理分布的多個區域有業務,並且使用倉庫管理。當業務擴展的時候,公司將添加新的倉庫。每個倉庫負責十個區域的供貨,每個區域 3000 個客戶服務,每個倉庫維護 100000 種商品的庫存紀錄。如下圖所示:
TPC-C 標准測試系統的數據庫有 9 個表組成,他們之間的關系如下圖所示:
其中W 代表倉庫數,框中的數字表示該表將存放的記錄條數,K代表1000,倉庫數的調整在測試中能夠體現數據庫所能支持的數據規模的能力。每個 Warehouse 的數據量,其大小約為 76823.04KB,可以有小量的變化,因為測試過程中將會插入或刪除現有記錄。可以根據每個Warehouse的數據量,計算測試過程中的數據總量。
計算公式為:數據總量(KB)≈ Warehouse個數*76823.04KB
以10個Warehouse的數據量為例計算其數據總量大小約為:768230.4KB
Ø 標准測試模擬的事務處理
TPC-C 標准測試模擬了 5 種事務處理,通過這些事務處理來模擬真實的用戶操作,事務分別為新訂單(New-Order)、支付操作(Payment)、訂單狀態查詢(Order-Status)、發貨(Delivery)、庫存狀態查詢(Stock-Level)。下面將對其執行的事務內容及特點進行詳細介紹.
1.新訂單(New-Order)
事務內容:對於任意一個客戶端,從固定的倉庫隨機選取 5-15 件商品,創建新訂單.其中 1%的訂單要由假想的用戶操作失敗而回滾。
主要特點:中量級、讀寫頻繁、要求響應快.
2.支付操作(Payment)
事務內容:對於任意一個客戶端,從固定的倉庫隨機選取一個轄區及其內用
戶,采用隨機的金額支付一筆訂單,並作相應歷史紀錄。
主要特點:輕量級,讀寫頻繁,要求響應快
3.訂單狀態查詢(Order-Status)
事務內容:對於任意一個客戶端,從固定的倉庫隨機選取一個轄區及其內用戶,讀取其最后一條訂單,顯示訂單內每件商品的狀態。
主要特點:中量級,只讀頻率低,要求響應快
4.發貨(Delivery)
事務內容:對於任意一個客戶端,隨機選取一個發貨包,更新被處理訂單的用戶余額,並把該訂單從新訂單中刪除.
主要特點:1-10 個批量,讀寫頻率低,較寬松的響應時間
5.庫存狀態查詢(Stock-Level)
事物內容:對於任意一個客戶端,從固定的倉庫和轄區隨機選取最后 20 條訂單,查看訂單中所有的貨物的庫存,計算並顯示所有庫存低於隨機生成域值的商品數量.
主要特點:重量級,只讀頻率低,較寬松的響應時間.
Ø 標准中事務處理需要滿足的條件
TPC-C 標准測試要求事務處理必須滿足下面的兩組條件.
1. 事務處理要滿足的時間及占有的比例
五種事務要滿足的時間要求,包括鍵盤操作時間(Keying Time),思考時間
因子(Think Time Distribution)以及 90%的響應時間(90th Percentile Response Time)限制。
2. 事務要滿足的隔離級別
TPC-C 測試過程中應該滿足的隔離級別要求。要求只能高不能低。
T1到T5分別指五種事務:New-Order,Payment,Order-Status,Delivery,Stock-Level。
P0到P3分別指:臟寫,臟讀,非重復性讀,幻影
Ø 測試指標
TPC-C測試的結果主要有兩個指標,即流量指標(Throughput,簡稱tpmC)和性價比(Price/Performance,簡稱Price/tpmC)。
流量指標(Throughput,簡稱tpmC):按照TPC組織的定義,流量指標描述了系統在執行支付操作、訂單狀態查詢、發貨和庫存狀態查詢這4種交易的同時,每分鍾可以處理多少個新訂單交易。所有交易的響應時間必須滿 足TPC-C測試規范的要求,且各種交易數量所占的比例也應該滿足TPC-C測試規范的要求。在這種情況下,流量指標值越大說明系統的聯機事務處理能力越高。
性價比(Price/Performance,簡稱Price/tpmc):即測試系統的整體價格與流量指標的比值,在獲得相同的tpmC值的情況下,價格越低越好。
Ø TPC-C的測試工具
常用的開源TPC-C基准測試工具有BenchmarkSQL, dbt2-v0.23等等。
benchmarkSQL的安裝部署
(1).JDK1.7
(2).apache ant
benchmarkSQL的配置文件解析:
第一個部分是JDBC連接信息。
第二個部分是場景設置,其中runTxnsPerTerminal是每分鍾執行事務數,runMins是執行多少分鍾,limitTxnsPerMin是每分鍾執行的事務總數,並且這里時間的單位是分鍾。場景執行的最低條件是第二項大於0。
第三個部分是TPCC中,五個事務執行的比例,總數等於100,通常不用修改。
典型配置:
Oracle配置需要修改的地方:
ü 每個倉庫要100M的空間1000個需要100G的存儲表空間。
ü 設置ORACLE 批量提交參數:
SQL> alter system set commit_write='batch,nowait';
ü 使用強制軟解析
SQL> alter system set cursor_sharing=force;
ü 使用O_DIRECT
SQL>alter system set filesystemio_options=directioscope=spfile;
SQL> alter system set disk_asynch_io=falsescope=spfile;
ü 修改最大連接數,打開游標數
SQL> alter system set processes=3000 scope=spfile;
SQL> ALTER SYSTEM SET open_cursors=900 SCOPE=BOTH;
SQL> alter system set session_cached_cursors=0scope=spfile;
ü 重啟數據庫
Ø Benchmarksql 操作<和howTO.txt不同>:
在Oracle目標庫創建了表空間和用戶之后:
(1).runSQL.sh profile./sql.common/tableCreate.sql
(2).LoadSQL.shprofile
(3).runSQL.shprofile ./sql.common/indexCreate.sql
(4).runBenchmarkSQL.sh
1. 測試2c2g/oracle10g的測試結果
a. 單個倉庫
[oracle@rhel651 run]$ ./runBenchmark.shmy_oracle1.properties
11:36:14,827 [main] INFO jTPCC : Term-00,
11:36:14,839 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
11:36:14,839 [main] INFO jTPCC : Term-00, BenchmarkSQL v5.0
11:36:14,839 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
11:36:14,839 [main] INFO jTPCC : Term-00, (c) 2003, Raul Barbosa
11:36:14,839 [main] INFO jTPCC : Term-00, (c) 2004-2016, Denis Lussier
11:36:14,841 [main] INFO jTPCC : Term-00, (c) 2016, Jan Wieck
11:36:14,842 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
11:36:14,842 [main] INFO jTPCC : Term-00,
11:36:14,842 [main] INFO jTPCC : Term-00, db=oracle
11:36:14,842 [main] INFO jTPCC : Term-00,driver=oracle.jdbc.driver.OracleDriver
11:36:14,842 [main] INFO jTPCC : Term-00,conn=jdbc:oracle:thin:@192.168.137.29:1521:iwhm
11:36:14,842 [main] INFO jTPCC : Term-00, user=benchmarksql
11:36:14,842 [main] INFO jTPCC : Term-00,
11:36:14,842 [main] INFO jTPCC : Term-00, warehouses=1
11:36:14,842 [main] INFO jTPCC : Term-00, terminals=1
11:36:14,845 [main] INFO jTPCC : Term-00, runTxnsPerTerminal=10
11:36:14,845 [main] INFO jTPCC : Term-00, limitTxnsPerMin=300
11:36:14,845 [main] INFO jTPCC : Term-00, terminalWarehouseFixed=true
11:36:14,845 [main] INFO jTPCC : Term-00,
11:36:14,846 [main] INFO jTPCC : Term-00, newOrderWeight=45
11:36:14,846 [main] INFO jTPCC : Term-00, paymentWeight=43
11:36:14,846 [main] INFO jTPCC : Term-00, orderStatusWeight=4
11:36:14,846 [main] INFO jTPCC : Term-00, deliveryWeight=4
11:36:14,846 [main] INFO jTPCC : Term-00, stockLevelWeight=4
11:36:14,846 [main] INFO jTPCC : Term-00,
11:36:14,847 [main] INFO jTPCC : Term-00,resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
11:36:14,847 [main] INFO jTPCC : Term-00,osCollectorScript=./misc/os_collector_linux.py
11:36:14,847 [main] INFO jTPCC : Term-00,
11:36:15,028 [main] INFO jTPCC : Term-00, copiedmy_oracle1.properties to my_result_2016-09-18_113615/run.properties
11:36:15,028 [main] INFO jTPCC : Term-00, createdmy_result_2016-09-18_113615/data/runInfo.csv for runID 2
11:36:15,028 [main] INFO jTPCC : Term-00, writing per transactionresults to my_result_2016-09-18_113615/data/result.csv
11:36:15,029 [main] INFO jTPCC : Term-00,osCollectorScript=./misc/os_collector_linux.py
11:36:15,029 [main] INFO jTPCC : Term-00, osCollectorInterval=1
11:36:15,029 [main] INFO jTPCC : Term-00, osCollectorSSHAddr=null
11:36:15,030 [main] INFO jTPCC : Term-00, osCollectorDevices=net_eth0blk_sda
11:36:15,081 [main] INFO jTPCC : Term-00,
Traceback (most recent call last):
File "<stdin>", line 299, in <module>
File "<stdin>", line 62, in main
File "<stdin>", line 166, in initSystemUsage
Exception: cpu line in /proc/stat too short
11:36:15,108 [Thread-1] ERROR OSCollector$CollectData : OSCollector,unexpected EOF while reading from external helper process
11:36:48,066 [main] INFO jTPCC : Term-00, C value for C_LAST duringload: 247
11:36:48,066 [main] INFO jTPCC : Term-00, C value for C_LAST thisrun: 162
11:36:48,066 [main] INFO jTPCC :Term-00, Te11:36:50,354[Thread-2] INFO jTPCC : Term-00, nttpmTOTAL: 84 Memory Usage: 8MB / 44MB
11:36:50,355 [Thread-2] INFO jTPCC : Term-00,
11:36:50,355 [Thread-2] INFO jTPCC : Term-00, Measured tpmC (NewOrders) =148.66
11:36:50,355 [Thread-2] INFO jTPCC : Term-00, Measured tpmTOTAL = 327.05
11:36:50,355 [Thread-2] INFO jTPCC : Term-00, Session Start = 2016-09-18 11:36:48
11:36:50,356 [Thread-2] INFO jTPCC : Term-00, Session End = 2016-09-18 11:36:50
11:36:50,356 [Thread-2] INFO jTPCC : Term-00, Transaction Count = 10
b. 多倉庫,10個倉庫20個terminals:
按照每個數據倉庫大小為80M,查看當前的表空間大小,使用10個測試。
TABLESPACE_NAME TOTAL FREE USED RAT
--------------- ---------- -------------------- ----------
UNDOTBS1 25 11.9375 13.0625 52.25
SYSAUX 240 2 238 99.17
BENCHMARK 1000 890.0625 109.9375 10.99
USERS 92.5 92.0625 .4375 .47
SYSTEM 480 9.5625 470.4375 98.01
修改配置:10個倉庫20個terminals:
[oracle@rhel651 run]$ ./runBenchmark.shmy_oracle10.properties
16:28:05,018 [main] INFO jTPCC : Term-00,
16:28:05,027 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
16:28:05,027 [main] INFO jTPCC : Term-00, BenchmarkSQL v5.0
16:28:05,027 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
16:28:05,028 [main] INFO jTPCC : Term-00, (c) 2003, Raul Barbosa
16:28:05,028 [main] INFO jTPCC : Term-00, (c) 2004-2016, Denis Lussier
16:28:05,032 [main] INFO jTPCC : Term-00, (c) 2016, Jan Wieck
16:28:05,032 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
16:28:05,033 [main] INFO jTPCC : Term-00,
16:28:05,033 [main] INFO jTPCC : Term-00, db=oracle
16:28:05,033 [main] INFO jTPCC : Term-00,driver=oracle.jdbc.driver.OracleDriver
16:28:05,033 [main] INFO jTPCC : Term-00,conn=jdbc:oracle:thin:@192.168.137.29:1521:iwhm
16:28:05,033 [main] INFO jTPCC : Term-00, user=benchmarksql10
16:28:05,033 [main] INFO jTPCC : Term-00,
16:28:05,033 [main] INFO jTPCC : Term-00, warehouses=10
16:28:05,033 [main] INFO jTPCC : Term-00, terminals=20
16:28:05,036 [main] INFO jTPCC : Term-00, runTxnsPerTerminal=10
16:28:05,036 [main] INFO jTPCC : Term-00, limitTxnsPerMin=300
16:28:05,036 [main] INFO jTPCC : Term-00, terminalWarehouseFixed=true
16:28:05,036 [main] INFO jTPCC : Term-00,
16:28:05,036 [main] INFO jTPCC : Term-00, newOrderWeight=45
16:28:05,036 [main] INFO jTPCC : Term-00, paymentWeight=43
16:28:05,037 [main] INFO jTPCC : Term-00, orderStatusWeight=4
16:28:05,037 [main] INFO jTPCC : Term-00, deliveryWeight=4
16:28:05,037 [main] INFO jTPCC : Term-00, stockLevelWeight=4
16:28:05,037 [main] INFO jTPCC : Term-00,
16:28:05,037 [main] INFO jTPCC : Term-00,resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
16:28:05,037 [main] INFO jTPCC : Term-00,osCollectorScript=./misc/os_collector_linux.py
16:28:05,037 [main] INFO jTPCC : Term-00,
16:28:05,206 [main] INFO jTPCC : Term-00, copiedmy_oracle10.properties to my_result_2016-09-18_162805/run.properties
16:28:05,206 [main] INFO jTPCC : Term-00, createdmy_result_2016-09-18_162805/data/runInfo.csv for runID 4
16:28:05,206 [main] INFO jTPCC : Term-00, writing per transactionresults to my_result_2016-09-18_162805/data/result.csv
16:28:05,207 [main] INFO jTPCC : Term-00,osCollectorScript=./misc/os_collector_linux.py
16:28:05,207 [main] INFO jTPCC : Term-00, osCollectorInterval=1
16:28:05,208 [main] INFO jTPCC : Term-00, osCollectorSSHAddr=null
16:28:05,208 [main] INFO jTPCC : Term-00, osCollectorDevices=net_eth0blk_sda
16:28:05,227 [main] INFO jTPCC : Term-00,
Traceback (most recent call last):
File "<stdin>", line 299, in <module>
File "<stdin>", line 62, in main
File "<stdin>", line 166, in initSystemUsage
Exception: cpu line in /proc/stat too short
16:28:05,244 [Thread-1] ERROR OSCollector$CollectData : OSCollector,unexpected EOF while reading from external helper process
16:28:06,313 [main] INFO jTPCC : Term-00, C value for C_LAST duringload: 220
16:28:06,313 [main] INFO jTPCC : Term-00, C value for C_LAST thisrun: 107
16:28:06,313 [main] INFO jTPCC : Term-00, Term-00,Running Average tpmTOTAL: 3016:28:47,442 [Thread-19] INFO jTPCC : Term-00, 7MB / 80MB
16:28:47,443 [Thread-19] INFO jTPCC : Term-00,
16:28:47,443 [Thread-19] INFO jTPCC : Term-00, Measured tpmC (NewOrders) =142.04
16:28:47,444 [Thread-19] INFO jTPCC : Term-00, Measured tpmTOTAL = 300.54
16:28:47,445 [Thread-19] INFO jTPCC : Term-00, Session Start = 2016-09-18 16:28:07
16:28:47,445 [Thread-19] INFO jTPCC : Term-00, Session End = 2016-09-18 16:28:47
16:28:47,445 [Thread-19] INFO jTPCC : Term-00, Transaction Count = 200
c. 修改配置:10個倉庫100個terminals:
數據庫連接數不夠用(默認150)ORA-00018: maximum number of sessions exceeded
改成300:alter system set processes=300 scope=spfile;
[oracle@rhel651 run]$ ./runBenchmark.shmy_oracle10.properties
16:44:21,573 [main] INFO jTPCC : Term-00,
16:44:21,582 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
16:44:21,584 [main] INFO jTPCC : Term-00, BenchmarkSQL v5.0
16:44:21,584 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
16:44:21,584 [main] INFO jTPCC : Term-00, (c) 2003, Raul Barbosa
16:44:21,584 [main] INFO jTPCC : Term-00, (c) 2004-2016, Denis Lussier
16:44:21,586 [main] INFO jTPCC : Term-00, (c) 2016, Jan Wieck
16:44:21,586 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
16:44:21,586 [main] INFO jTPCC : Term-00,
16:44:21,587 [main] INFO jTPCC : Term-00, db=oracle
16:44:21,587 [main] INFO jTPCC : Term-00,driver=oracle.jdbc.driver.OracleDriver
16:44:21,587 [main] INFO jTPCC : Term-00,conn=jdbc:oracle:thin:@192.168.137.29:1521:iwhm
16:44:21,587 [main] INFO jTPCC : Term-00, user=benchmarksql10
16:44:21,587 [main] INFO jTPCC : Term-00,
16:44:21,587 [main] INFO jTPCC : Term-00, warehouses=10
16:44:21,587 [main] INFO jTPCC : Term-00, terminals=100
16:44:21,590 [main] INFO jTPCC : Term-00, runTxnsPerTerminal=10
16:44:21,590 [main] INFO jTPCC : Term-00, limitTxnsPerMin=300
16:44:21,590 [main] INFO jTPCC : Term-00, terminalWarehouseFixed=true
16:44:21,590 [main] INFO jTPCC : Term-00,
16:44:21,590 [main] INFO jTPCC : Term-00, newOrderWeight=45
16:44:21,590 [main] INFO jTPCC : Term-00, paymentWeight=43
16:44:21,591 [main] INFO jTPCC : Term-00, orderStatusWeight=4
16:44:21,591 [main] INFO jTPCC : Term-00, deliveryWeight=4
16:44:21,591 [main] INFO jTPCC : Term-00, stockLevelWeight=4
16:44:21,591 [main] INFO jTPCC : Term-00,
16:44:21,591 [main] INFO jTPCC : Term-00,resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
16:44:21,591 [main] INFO jTPCC : Term-00,osCollectorScript=./misc/os_collector_linux.py
16:44:21,591 [main] INFO jTPCC : Term-00,
16:44:21,759 [main] INFO jTPCC : Term-00, copiedmy_oracle10.properties to my_result_2016-09-18_164421/run.properties
16:44:21,759 [main] INFO jTPCC : Term-00, createdmy_result_2016-09-18_164421/data/runInfo.csv for runID 6
16:44:21,760 [main] INFO jTPCC : Term-00, writing per transactionresults to my_result_2016-09-18_164421/data/result.csv
16:44:21,761 [main] INFO jTPCC : Term-00,osCollectorScript=./misc/os_collector_linux.py
16:44:21,761 [main] INFO jTPCC : Term-00, osCollectorInterval=1
16:44:21,761 [main] INFO jTPCC : Term-00, osCollectorSSHAddr=null
16:44:21,761 [main] INFO jTPCC : Term-00, osCollectorDevices=net_eth0blk_sda
16:44:21,781 [main] INFO jTPCC : Term-00,
Traceback (most recent call last):
File "<stdin>", line 299, in <module>
File "<stdin>", line 62, in main
File "<stdin>", line 166, in initSystemUsage
Exception: cpu line in /proc/stat too short
16:44:21,803 [Thread-1] ERROR OSCollector$CollectData : OSCollector,unexpected EOF while reading from external helper process
16:44:22,840 [main] INFO jTPCC : Term-00, C value for C_LAST duringload: 220
16:44:22,840 [main] INFO jTPCC : Term-00, C value for C_LAST thisrun: 102 Term-00,Running Average tpmTOTA16:47:47,105 [Thread-89] INFO jTPCC : Term-00, ge: 112MB / 162MB 16:47:47,106 [Thread-89] INFO jTPCC : Term-00,
16:47:47,106 [Thread-89] INFO jTPCC : Term-00, Measured tpmC (NewOrders) =133.64
16:47:47,106 [Thread-89] INFO jTPCC : Term-00, Measured tpmTOTAL = 299.94
16:47:47,106 [Thread-89] INFO jTPCC : Term-00, Session Start = 2016-09-18 16:44:26
16:47:47,106 [Thread-89] INFO jTPCC : Term-00, Session End = 2016-09-18 16:47:47
16:47:47,106 [Thread-89] INFO jTPCC : Term-00, Transaction Count = 1000
d. 修改配置:50個倉庫200個terminals:
因為200個terminals 是200個鏈接,直接報出錯誤,不能執行,后改成50也不能正常運行,最終修改為20.
20*80M = 1600M的表空間需求 ,這里按照文檔應該是100M/warehouse
50個warehouse和50個terminal測試數據量生成:
neworder
45W
Order_line
15010354
運行一次benchmark:
neworder
45W +18
Order_line
15010626
使用持續時間來跑壓力:
runTxnsPerTerminal=0
//To run for specified minutes-runTxnsPerTerminal must equal zero
runMins=10##跑10分鍾
//Number of total transactions per minute
limitTxnsPerMin=0
09:53:07,030 [main] INFO jTPCC : Term-00,
09:53:07,033 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
09:53:07,033 [main] INFO jTPCC : Term-00, BenchmarkSQL v5.0
09:53:07,034 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
09:53:07,034 [main] INFO jTPCC : Term-00, (c) 2003, Raul Barbosa
09:53:07,034 [main] INFO jTPCC : Term-00, (c) 2004-2016, Denis Lussier
09:53:07,036 [main] INFO jTPCC : Term-00, (c) 2016, Jan Wieck
09:53:07,036 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
09:53:07,036 [main] INFO jTPCC : Term-00,
09:53:07,036 [main] INFO jTPCC : Term-00, db=oracle
09:53:07,036 [main] INFO jTPCC : Term-00,driver=oracle.jdbc.driver.OracleDriver
09:53:07,036 [main] INFO jTPCC : Term-00,conn=jdbc:oracle:thin:@192.168.137.29:1521:iwhm
09:53:07,037 [main] INFO jTPCC : Term-00, user=benchmarksql10
09:53:07,037 [main] INFO jTPCC : Term-00,
09:53:07,037 [main] INFO jTPCC : Term-00, warehouses=50
09:53:07,037 [main] INFO jTPCC : Term-00, terminals=50
09:53:07,040 [main] INFO jTPCC : Term-00, runMins=10
09:53:07,040 [main] INFO jTPCC : Term-00, limitTxnsPerMin=0
09:53:07,040 [main] INFO jTPCC : Term-00, terminalWarehouseFixed=true
09:53:07,040 [main] INFO jTPCC : Term-00,
09:53:07,040 [main] INFO jTPCC : Term-00, newOrderWeight=45
09:53:07,040 [main] INFO jTPCC : Term-00, paymentWeight=43
09:53:07,040 [main] INFO jTPCC : Term-00, orderStatusWeight=4
09:53:07,041 [main] INFO jTPCC : Term-00, deliveryWeight=4
09:53:07,041 [main] INFO jTPCC : Term-00, stockLevelWeight=4
09:53:07,041 [main] INFO jTPCC: Term-00,
09:53:07,041 [main] INFO jTPCC : Term-00,resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
09:53:07,041 [main] INFO jTPCC : Term-00,osCollectorScript=./misc/os_collector_linux.py
09:53:07,041 [main] INFO jTPCC : Term-00,
09:53:07,467 [main] INFO jTPCC : Term-00, copiedmy_oracle20.properties to my_result_2016-09-20_095307/run.properties
09:53:07,467 [main] INFO jTPCC : Term-00, createdmy_result_2016-09-20_095307/data/runInfo.csv for runID 16
09:53:07,467 [main] INFO jTPCC : Term-00, writing per transactionresults to my_result_2016-09-20_095307/data/result.csv
09:53:07,468 [main] INFO jTPCC : Term-00,osCollectorScript=./misc/os_collector_linux.py
09:53:07,469 [main] INFO jTPCC : Term-00, osCollectorInterval=1
09:53:07,469 [main] INFO jTPCC : Term-00, osCollectorSSHAddr=null
09:53:07,469 [main] INFO jTPCC : Term-00, osCollectorDevices=net_eth0blk_sda
09:53:07,480 [main] INFO jTPCC : Term-00,
Traceback (most recent call last):
File "<stdin>", line 299, in <module>
File "<stdin>", line 62, in main
File "<stdin>", line 166, in initSystemUsage
Exception: cpu line in /proc/stat too short
09:53:07,496 [Thread-1] ERROR OSCollector$CollectData : OSCollector,unexpected EOF while reading from external helper process
09:53:08,959 [main] INFO jTPCC : Term-00, C value for C_LAST duringload: 209
09:53:08,959 [main] INFO jTPCC : Term-00, C value for C_LAST thisrun: 125
09:53:08,960 [main] INFO jTPCC : Term-00, Term-00, Running AveragetpmTOTAL: 1.53 Current tpmTOTAL:564 Memory Usage: 53MB / 236MB Term-00, Running Average tpmTOTAL: 0.60 Current tpmTOTAL: 588 Memory Usage: 56MB / 236MB
Term-00, Runni12:12:16,777 [Thread-33] INFO jTPCC : Term-00, 0 Memory Usage: 58MB / 236MB
12:12:16,777 [Thread-33] INFO jTPCC : Term-00,
12:12:16,777 [Thread-33] INFO jTPCC : Term-00, Measured tpmC (NewOrders) =0.2
12:12:16,777 [Thread-33] INFO jTPCC : Term-00, Measured tpmTOTAL = 0.55
12:12:16,778 [Thread-33] INFO jTPCC : Term-00, Session Start = 2016-09-20 09:53:10
12:12:16,778 [Thread-33] INFO jTPCC : Term-00, Session End = 2016-09-20 12:12:16
12:12:16,778 [Thread-33] INFO jTPCC : Term-00, Transaction Count = 76
這個時候可以看到數據庫主機的磁盤已經被打滿。
還有一種情況是將鏈接數調整到了100,在造數的過程中,會出現連接被占滿的情況。
Terminal 和 warehouse的值是10:1,在代碼段里看到。
RAC環境:
[oracle@rhel651 run]$ ./runBenchmark.shmy_oracleRac.properties
09:23:44,326 [main] INFO jTPCC : Term-00,
09:23:44,453 [main] INFO jTPCC : Term-00, +-------------------------------------------------------------+
09:23:44,454 [main] INFO jTPCC : Term-00, BenchmarkSQL v5.0
09:23:44,454 [main] INFO jTPCC : Term-00,+-------------------------------------------------------------+
09:23:44,454 [main] INFO jTPCC : Term-00, (c) 2003, Raul Barbosa
09:23:44,454 [main] INFO jTPCC : Term-00, (c) 2004-2016, Denis Lussier
09:23:44,456 [main] INFO jTPCC : Term-00, (c) 2016, Jan Wieck
09:23:44,456 [main] INFO jTPCC : Term-00, +-------------------------------------------------------------+
09:23:44,456 [main] INFO jTPCC : Term-00,
09:23:44,457 [main] INFO jTPCC : Term-00, db=oracle
09:23:44,457 [main] INFO jTPCC : Term-00,driver=oracle.jdbc.driver.OracleDriver
09:23:44,457 [main] INFO jTPCC : Term-00,conn=jdbc:oracle:thin:@192.168.137.132:1521/iwhm
09:23:44,457 [main] INFO jTPCC : Term-00, user=benchmarksql
09:23:44,457 [main] INFO jTPCC : Term-00,
09:23:44,457 [main] INFO jTPCC : Term-00, warehouses=20
09:23:44,458 [main] INFO jTPCC: Term-00, terminals=50
09:23:44,460 [main] INFO jTPCC : Term-00, runMins=10
09:23:44,460 [main] INFO jTPCC : Term-00, limitTxnsPerMin=0
09:23:44,460 [main] INFO jTPCC : Term-00, terminalWarehouseFixed=true
09:23:44,460 [main] INFO jTPCC : Term-00,
09:23:44,460 [main] INFO jTPCC : Term-00, newOrderWeight=45
09:23:44,460 [main] INFO jTPCC : Term-00, paymentWeight=43
09:23:44,461 [main] INFO jTPCC : Term-00, orderStatusWeight=4
09:23:44,461 [main] INFO jTPCC : Term-00, deliveryWeight=4
09:23:44,461 [main] INFO jTPCC : Term-00, stockLevelWeight=4
09:23:44,461 [main] INFO jTPCC : Term-00,
09:23:44,461 [main] INFO jTPCC : Term-00,resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
09:23:44,461 [main] INFO jTPCC : Term-00, osCollectorScript=./misc/os_collector_linux.py
09:23:44,461 [main] INFO jTPCC : Term-00,
09:23:44,734 [main] INFO jTPCC : Term-00, copiedmy_oracleRac.properties to my_result_2016-09-23_092344/run.properties
09:23:44,734 [main] INFO jTPCC : Term-00, created my_result_2016-09-23_092344/data/runInfo.csvfor runID 17
09:23:44,735 [main] INFO jTPCC : Term-00, writing per transactionresults to my_result_2016-09-23_092344/data/result.csv
09:23:44,736 [main] INFO jTPCC : Term-00, osCollectorScript=./misc/os_collector_linux.py
09:23:44,736 [main] INFO jTPCC : Term-00, osCollectorInterval=1
09:23:44,736 [main] INFO jTPCC : Term-00, osCollectorSSHAddr=null
09:23:44,736 [main] INFO jTPCC : Term-00, osCollectorDevices=net_eth0blk_sda
09:23:44,912 [main] INFO jTPCC : Term-00,
Traceback (most recent call last):
File "<stdin>", line 299, in <module>
File "<stdin>", line 62, in main
File "<stdin>", line 166, in initSystemUsage
Exception: cpu line in /proc/stat tooshort Term-00,Running Average tpmTOT09:35:01,256 [Thread-28] INFO jTPCC : Term-00, Usage: 97MB / 228MB 09:35:01,256 [Thread-28] INFO jTPCC : Term-00, 09:35:01,256 [Thread-28] INFO jTPCC : Term-00, Measured tpmC (NewOrders) = 523.68 09:35:01,257[Thread-28] INFO jTPCC : Term-00,Measured tpmTOTAL = 1174.01 09:35:01,257 [Thread-28] INFO jTPCC : Term-00, Session Start = 2016-09-23 09:24:25
09:35:01,257 [Thread-28] INFO jTPCC : Term-00, Session End = 2016-09-23 09:35:01
09:35:01,257 [Thread-28] INFO jTPCC : Term-00, Transaction Count = 12439
在同樣性能指標的DISK環境下,RAC能達到500多,性能提高了將近5倍!!
測試結果:
TPCC值
用戶數
warehouses
148.66
1
1
142.04
20
10
133.64
100
10
0.2
50
50
Awr:
Ø 生成awr
手動執行一個快照:
Exec dbms_workload_repository.create_snapshot; (這個要背出來哦,用的時候去翻手冊,丟臉哦 J!)
創建一個AWR基線<本次測試不使用>
使用 AWR 基線進行性能比較分析
為性能度量設置什么樣的閾值是合適的?要檢測哪些內容?如果希望性能量度值表示服務器接近其容量限制的程度,則使用絕對值是正確的選擇。但如果要了解今天的性能是否與上周、上月此時的性能不同,則必須將當前性能與基線進行比較。
為性能度量設置什么樣的閾值是合適的?要檢測哪些內容?如果希望性能量度值表示服務器接近其容量限制的程度,則使用絕對值是正確的選擇。但如果要了解今天的性能是否與上周、上月此時的性能不同,則必須將當前性能與基線進行比較。
Exec DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id,end_snap_id ,baseline_name);
@?/rdbms/admin/awrddrpt AWR比對報告
@?/rdbms/admin/awrgrpt RAC 全局AWR
自動生成AWR HTML報告:
http://www.oracle-base.com/dba/10g/generate_multiple_awr_reports.sql
Ø 查看awr
Selectsnap_id,dbid,BEGIN_INTERVAL_TIME,END_INTERVAL_TIME,SNAP_LEVEL fromdba_hist_snapshot order by 3;
495 - 497
Ø 查看報告
在執行之前查看當前的snapshot編號並記錄值,在執行完成之后記錄最后執行的編號,之后執行awr區間的報告;
參考AWR中的Instance ActivityStatistics 環節
IOPS = “physical reads total I/O requests”+ “physical writes total I/Orequests”
MBytes/s = “physical reads total bytes” + physical writes totalbytes”
MBytes/s = “physical reads total bytes” + physical writes totalbytes”
physical read total IO requests 3,272,436 455.48 34.52
physical write IO requests 314,647 43.79 3.32
physical write IO requests 314,647 43.79 3.32
IOPS = “physical reads total I/O requests” + “physical writes totalI/Orequests” = 455+43 = 498
physical read total bytes
3,218,786,182,144 448,007,955.58 33,956,306.25
physical write total bytes
physical write total bytes
72,372,139,008 10,073,143.17 763,483.62
MBytes/s= 448,007,955 + 10,073,143 = 458081098bytes= 436 MB/s
大致計算其 IOPS 為 498 而 吞吐量為 436MB/s
實例:
physical read total IO requests
97,973
59.29
16.24
physical write IO requests
261,015
157.89
43.26
IOPS = 59.29 + 157.89 = 217.27
physical read total bytes
2,356,165,632
1,426,327.43
390,546.27
physical write bytes
3,832,233,984
2,318,876.61
635,212.00
Mbytes/s = 1426327.43 + 2318876.61 = 3.6Mbytes/s
=〉terminals和 limitTxnsPerMin參數解釋
The configuration setting "terminals" is the number of database connections, BenchmarkSQL will use in parallel. Like many benchmarks of its kind, BenchmarkSQL is currently implementing an agglutenation of what is defined in the TPC-C Specs as a Terminal, with what should be a worker thread with a database connection in the SUT.
The configuration setting "limitTxnsPerMin" controls a transaction rate throttling mechanism. TPC-C defines an OLTP test, so the benchmark driver should not behave like a set of punch card readers but rather act more like (many) human beings. The rate throttling isn't exactly what TPC-C specifies, but is an OK approximation for a simple implementation. To get a driver to really behave as specified in TPC-C is difficult.
說白了,terminals參數就是並發啦。
---------------------
作者:大慧說
來源:CSDN
原文:https://blog.csdn.net/nirvana52/article/details/52668591
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
作者:大慧說
來源:CSDN
原文:https://blog.csdn.net/nirvana52/article/details/52668591
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!