佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > 用sysbench來測(cè)試MySQL的性能的教程

用sysbench來測(cè)試MySQL的性能的教程

熱門標(biāo)簽:Linux服務(wù)器 呼叫中心市場(chǎng)需求 AI電銷 網(wǎng)站排名優(yōu)化 百度競(jìng)價(jià)排名 服務(wù)外包 地方門戶網(wǎng)站 鐵路電話系統(tǒng)

鑒于最近對(duì)OpenStack的興趣和激情,我想要確保我可以做恰當(dāng)?shù)南到y(tǒng)性能評(píng)估。我主要開始轉(zhuǎn)向sysbench,是因?yàn)樗鼛硪幌盗胸S富的針對(duì)不同層面的測(cè)試(通過 -test=option 來獲知) ,包括有:

  •     fileio - 文件 I/O測(cè)試
  •     cpu - CPU系能測(cè)試
  •     memory - 內(nèi)存功能速度測(cè)試
  •     threads - 線程子系統(tǒng)系能測(cè)試
  •     mutex - 互斥性能測(cè)試

正如你所看到的的,sysbench將讓你的心思著重放在你的硬件和基礎(chǔ)架構(gòu)的許多基礎(chǔ)組件上,例如你的磁盤子系統(tǒng),以及你的CPUs和內(nèi)存。有一個(gè)額外的選項(xiàng),是用來執(zhí)行對(duì)MySQL的模擬壓力測(cè)試,并且當(dāng)我在0.5版本中沒有看到以上的所提到的可支持測(cè)試項(xiàng)時(shí)候,我很驚訝,盡管它可以用來顯示“聯(lián)機(jī)事務(wù)處理 – 聯(lián)機(jī)事務(wù)處理測(cè)試”。-test=oltp到底怎么回事??
 

這個(gè)列表來自于sysbench最近的發(fā)布版本0.5——如果你僅僅是在這個(gè)版本上使用它,使用 Frederic Descamps(感謝lefred!)所提供的 包。如果你用的(系統(tǒng))是EPEL,Ubuntu 14.04 或者 Debian 7,就可以使用0.4.12版本(檢查sysbench的版本 -version)。那么,測(cè)試類型OLTP再也不會(huì)出現(xiàn)。這個(gè)版本做了什么呢?我使勁撓頭,直到我詢問Percona IRC才知道在0.5版本里的標(biāo)準(zhǔn)OLTP測(cè)試類型被替換成了不一樣的語法,它使用傳遞參數(shù)到sysbench,替換掉了引用腳本寫入lua的方式。它的優(yōu)點(diǎn)是,現(xiàn)在你有了一個(gè)接口,可以寫入你特定的負(fù)載測(cè)試中(提供你了解的lua(接口),用起來也不難)。如果你還想要運(yùn)行預(yù)定義負(fù)載測(cè)試,它們還是存在的,但是你必須把它們作為RPM的一部分去安裝,或者直接拷貝到你的系統(tǒng)。

幸運(yùn)的是,如果你使用lefred提供的包,你會(huì)發(fā)現(xiàn)下面這些lua腳本(這里使用了截止至2014年8月4號(hào)的Amazon ami):

復(fù)制代碼 代碼如下:
[root@pxc-control ~]# ls -l /usr/share/doc/sysbench/tests/db/
total 44
-rw-r--r-- 1 root root 3585 Sep 7 2012 common.lua
-rw-r--r-- 1 root root 340 Sep 7 2012 delete.lua
-rw-r--r-- 1 root root 830 Sep 7 2012 insert.lua
-rw-r--r-- 1 root root 2925 Sep 7 2012 oltp.lua
-rw-r--r-- 1 root root 342 Sep 7 2012 oltp_simple.lua
-rw-r--r-- 1 root root 425 Sep 7 2012 parallel_prepare.lua
-rw-r--r-- 1 root root 343 Sep 7 2012 select.lua
-rw-r--r-- 1 root root 3964 Sep 7 2012 select_random_points.lua
-rw-r--r-- 1 root root 4066 Sep 7 2012 select_random_ranges.lua
-rw-r--r-- 1 root root 343 Sep 7 2012 update_index.lua
-rw-r--r-- 1 root root 552 Sep 7 2012 update_non_index.lua

所以訣竅(如果你希望這么叫它)不是通過單一詞語傳遞--test指令,而是通過傳遞一個(gè)lua腳本的完整路徑。

下面首先是舊的方式(sysbench 0.4.12來自EPEL庫):
 

復(fù)制代碼 代碼如下:
--test=oltp --oltp-test-mode=complex

下面是新的方式(sysbench 0.5):
 

復(fù)制代碼 代碼如下:
--test=/usr/share/doc/sysbench/tests/db/insert.lua

下面是我在一個(gè)3個(gè)節(jié)點(diǎn)的PXC集群上跑haproxy,做一個(gè)僅插入的測(cè)試類型,下面是我傳遞給sysbench的全部命令:
 

復(fù)制代碼 代碼如下:

[root@pxc-control ~]# cat sys_haproxy.sh
#!/bin/bash
sysbench
--test=/usr/share/doc/sysbench/tests/db/insert.lua
--mysql-host=pxc-control
--mysql-port=9999
--mysql-user=sysbench-haproxy
--mysql-password=sysbench-haproxy
--mysql-db=sbtest
--mysql-table-type=innodb
--oltp-test-mode=complex
--oltp-read-only=off
--oltp-reconnect=on
--oltp-table-size=1000000
--max-requests=100000000
--num-threads=3
--report-interval=1
--report-checkpoints=10
--tx-rate=24
$1

下面是insert.lua腳本的內(nèi)容:

復(fù)制代碼 代碼如下:
[root@pxc-control ~]# cat /usr/share/doc/sysbench/tests/db/insert.lua
pathtest = string.match(test, "(.*/)") or ""
dofile(pathtest .. "common.lua")
function thread_init(thread_id)
   set_vars()
end
function event(thread_id)
   local table_name
   local i
   local c_val
   local k_val
   local pad_val
   table_name = "sbtest".. sb_rand_uniform(1, oltp_tables_count)
   if (oltp_auto_inc) then
      i = 0
   else
      i = sb_rand_uniq(1, oltp_table_size)
   end
   k_val = sb_rand(1, oltp_table_size)
   c_val = sb_rand_str([[
###########-###########-###########-###########-###########-###########-###########-###########-###########-###########]])
   pad_val = sb_rand_str([[
###########-###########-###########-###########-###########]])
   rs = db_query("INSERT INTO " .. table_name ..  " (id, k, c, pad) VALUES " .. string.format("(%d, %d, '%s', '%s')",i, k_val, c_val, pad_val))
end

我比較喜歡sysbench 0.5的一個(gè)地方(超過lua 接口,肯定的?。┦撬F(xiàn)在帶來一個(gè)配置項(xiàng) –report-interval option(我通常都是設(shè)置為 =1),以便在腳本運(yùn)行時(shí)你可以定時(shí)看到輸出信息。不要等到運(yùn)行結(jié)束是再得到反饋!這里有個(gè)用sysbench 0.5的測(cè)試樣例,通過本地hapoxy實(shí)例運(yùn)行插入數(shù)據(jù)動(dòng)作以及向在同一個(gè)PXC(Percona XtrDB Cluster)集群上的三個(gè)節(jié)點(diǎn)寫數(shù)據(jù)動(dòng)作,例如OpenStack Trove會(huì)做:
 

復(fù)制代碼 代碼如下:

[root@pxc-control ~]# ./sys_haproxy.sh run
sysbench 0.5:  multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 3
Report intermediate results every 1 second(s)
Random number generator seed is 0 and will be ignored
Threads started!
[   1s] threads: 3, tps: 0.00, reads/s: 0.00, writes/s: 1099.28, response time: 9.86ms (95%)
[   2s] threads: 3, tps: 0.00, reads/s: 0.00, writes/s: 973.02, response time: 10.77ms (95%)
[   3s] threads: 3, tps: 0.00, reads/s: 0.00, writes/s: 1181.01, response time: 6.23ms (95%)
[   4s] threads: 3, tps: 0.00, reads/s: 0.00, writes/s: 1103.00, response time: 6.77ms (95%)

我也想讓你注意到來自Nilnandan Joshi博客的文章,Nilnandan Joshi是來自Percona支持團(tuán)隊(duì),在這篇文章中他介紹了在Debian 7上編譯構(gòu)建sysbench 0.5的一種方法。在這里非常感謝Nil的貢獻(xiàn)!

我希望這篇文章可以幫組那些想要升級(jí)到sysbench 0.5的同志,并且能質(zhì)疑(探討)-test=oltp去哪兒了。我很樂意看到你自己的關(guān)于sysbench用戶案列,并且是否有其他人發(fā)布過他們自己的用于負(fù)載測(cè)試的lua腳本!

您可能感興趣的文章:
  • Sysbench對(duì)Mysql進(jìn)行基準(zhǔn)測(cè)試過程解析
  • MySQL數(shù)據(jù)庫基于sysbench實(shí)現(xiàn)OLTP基準(zhǔn)測(cè)試
  • 通過sysbench工具實(shí)現(xiàn)MySQL數(shù)據(jù)庫的性能測(cè)試的方法
  • sysbench對(duì)mysql壓力測(cè)試的詳細(xì)教程
  • 使用sysbench來測(cè)試MySQL性能的詳細(xì)教程
  • MySQL性能壓力基準(zhǔn)測(cè)試工具sysbench的使用簡(jiǎn)介

標(biāo)簽:蘭州 崇左 湖南 仙桃 湘潭 衡水 黃山 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用sysbench來測(cè)試MySQL的性能的教程》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    耿马| 伊宁市| 大连市| 安泽县| 肥东县| 重庆市| 思茅市| 综艺| 金溪县| 扎赉特旗| 绵阳市| 荔波县| 昆山市| 田东县| 新绛县| 安新县| 金乡县| 永胜县| 富民县| 蒲城县| 蚌埠市| 兰溪市| 台安县| 革吉县| 兴山县| 二连浩特市| 安乡县| 镇康县| 乃东县| 福州市| 英德市| 武安市| 东源县| 辽源市| 博爱县| 调兵山市| 雅安市| 南郑县| 绥化市| 武强县| 南靖县|