1. 程式人生 > 其它 >swingbench壓測Oracle小記(r12筆記第19天)

swingbench壓測Oracle小記(r12筆記第19天)

之前也分享過一篇關於swingbench測試Oracle的文章,圖形工具和命令列的博弈-swingbench配置(r8筆記第63天),也算是一個起步了。

新業務要上線,不跑個壓力測試還真說不過去,當然對於Oracle壓測我比較喜歡swingbench的一點就是它可以模擬一些OLTP的場景,比如訂單類業務,新建客戶,訂購,下單等這樣一個流程的操作算是一個模擬真實的事務。

當然swingbench還有幾個地方做得挺有特色,一個是我們壓力測試是指定資料量,比如1G,5G,100G,初始化資料就會按照這個基線來進行資料的分佈。

swingbench的配置,其實有了圖形介面,其實難度就會大大降低。這裡需要注意幾點,首先就是配置連線串的地方,格式是swingbench特有的方式,如下面標紅所示。

然後就是需要注意表空間的情況,這裡比較讚的是可以根據你預期的資料量來預估需要多少物理空間,比如10G的資料,物理層面需要準備資料檔案大概在32G,因為還有索引等需要消耗空間,臨時表空間的大小也考慮到了,這個是在建立索引的部分會大量用到。

對於資料初始化的速度,其實還是可以的,每秒20萬左右。

昨天嘗試sysbench初始化Oracle資料,運行了一晚上,竟然只初始化了總共1000萬的資料,放在這裡也就幾分鐘就搞定。

務必需要注意的一個問題

這裡有一個問題務必需要注意,那就是配置的時候需要一個DBA使用者,預設我們賦予DBA角色之後,還需要確認如下的語句可以正確執行。

grant execute on dbms_lock to <新使用者>;

否則,你如果初始化大量的資料,漫長的等待之後,就會丟擲下面的錯誤。可以看到持續了一個半小時,最後還是提示失敗。浪費時間不說,還浪費感情。

如果碰到這類問題,細細檢視,就會發現裡面建立了一個包體,包體是編譯失敗的,如果要逐步修復,那這個工作量還真不小。

希望大家測試的時候,都是一步到位,能夠看到如下的介面。

文字方式建立資料

當然需要說明的是,如果確實通過windows環境連線有困難,文字模式也是可以的,可以使用如下的命令來做,如果猛一看命令還蠻複雜,其實不要自己給自己壓力,這些選項都有詳細的解釋。

./oewizard -s -c oewizard.xml -allindexes -ts users -tc 16 -v -cl -scale 50 -create

這個命令的含義簡單說一下,-s是靜默,-c是指定配置檔案,就是oewizard.xml,-allindexes是支援所有的索引型別,-ts是指定表空間為users, -tc 是併發度,-scale是資料量,50就是50G,然後最後一個引數create是建立資料。

使用swingbench壓測

使用swingbench壓測Oracle,圖形介面是一個亮點,比如下面的一個截圖,上面的部分是測試的場景,可以根據需求來指定所佔的比例,這個相對是比較靈活的,下面的部分就是效能指標了,主要的一個參考點是TPS,就是每秒事務數,可以在指定的使用者數下進行壓測。

當然這個和配置,環境有很大的關係,不可一概而論,像sysbench動輒測試出的幾十萬TPS,和這個場景相比,這個值雖小,但是說服力更強一些。

下面是一個配置較好的環境中,使用RAC的多節點壓測得到的資料圖,TPS大概是4000多,使用者數大概是500。

這裡需要提一點的是,對於純碎的壓測,不希望模擬複雜的場景,swingbench也可以支援,裡面有一個模板stresstest.xml

在configs目錄下,它的一個基本原理就是建立一個表,然後在哪個表上做大量的DML操作。大概就是這樣的比例,還是可以根據需要來指定,可以很清晰的看出swingbench裡面其實大量的配置都是xml.

如果想看一下業務層面的資料統計,也是可以的。這個圖就能夠看到訂單類業務中的一些資料統計情況,檢視產品的比例,檢視訂單的比例,訂購的比例等。

文字模式下的壓測使用

文字模式下其實也是可以使用swingbench,它提供了一個命令列charbench。

我們可以使用命令,其實理解起來也不難,比如 -s是靜默模式, -a是自動執行, -bg是後臺執行, -c是指定配置模板檔案,-env是打印出環境變數的資訊,-v就是對應的指標,用逗號分隔,-vo是生成相應的日誌

./charbench -s -a -bg -c /root/swingbench/swingbench/configs/stresstest.xml -env -v trans,cpu,disk,dml,errs,tpm,tps,users,resp,vresp -vo a.log