国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Linux > 正文

sysbench自定義lua腳本實(shí)現(xiàn)實(shí)際的業(yè)務(wù)邏輯壓力測(cè)試

2024-08-27 23:58:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

sysbench本身就是一款開(kāi)源的多線程性能測(cè)試工具,可以執(zhí)行CPU/內(nèi)存/線程/IO/數(shù)據(jù)庫(kù)等方面的性能測(cè)試,數(shù)據(jù)庫(kù)目前支持MySQL/Oracle/PostgreSQL了,下面給各位介紹sysbench自定義lua腳本實(shí)現(xiàn)實(shí)際的業(yè)務(wù)邏輯壓力測(cè)試?yán)?

使用sysbench進(jìn)行mysql的oltp測(cè)試,一般的測(cè)試在sysbench中在tests/db中提供了一個(gè)oltp.lua腳本可以進(jìn)行oltp的壓力測(cè)試.

但不能完全模擬自己實(shí)際業(yè)務(wù)的壓力測(cè)試,不同的業(yè)務(wù),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)量都是不一樣的,為了更接近實(shí)際業(yè)務(wù)的讀寫(xiě)壓力測(cè)試,就得自己寫(xiě)lua腳本,然后通過(guò)sysbench進(jìn)行壓力測(cè)試.

寫(xiě)這個(gè)lua腳本很簡(jiǎn)單,只需要會(huì)寫(xiě)lua腳本就可以了.

1、首先收集實(shí)際業(yè)務(wù)的訪問(wèn)數(shù)據(jù)庫(kù)的sql;

2、準(zhǔn)備一臺(tái)恢復(fù)好的備份庫(kù)(從線上導(dǎo)一個(gè)).

3、將收集的sql寫(xiě)在lua腳本里(具體如何寫(xiě),后面舉個(gè)例子).

4、通過(guò)sysbench的--test參數(shù)和--mysql-db參數(shù)進(jìn)行測(cè)試(這里就不需要prepare了,直接run就行).

舉個(gè)小例子,模擬實(shí)際業(yè)務(wù)環(huán)境:

  1. CREATE TABLE `t1` ( 
  2.   `id` int(10) NOT NULL AUTO_INCREMENT, 
  3.   `namevarchar(50) DEFAULT NULL
  4.   PRIMARY KEY (`id`) 
  5. ) ENGINE=InnoDB AUTO_INCREMENT=10101 DEFAULT CHARSET=utf8 

插入模擬的際業(yè)務(wù)數(shù)據(jù):

  1. delimiter $$ 
  2. create procedure add_data(in maxnum int)  
  3. begin  
  4.  declare i int default 0; 
  5.  declare s varchar(500);  
  6.  while(i<maxnum) do  
  7.   select concat("abcdedsfsfsdfsfsf",i) into s;  
  8.   insert into t1(name)values(s);   
  9.   set i=i+1; 
  10.  end while; 
  11. end $$  
  12. delimiter ; 
  13.  
  14. call add_data(10000); 

準(zhǔn)備lua腳本:[root@sever3 db]# cat test.lua

  1. function thread_init(thread_id) 
  2.    -- set_vars() 
  3.    db_connect() 
  4. end 
  5. //Vevb.com 
  6. function event(thread_id) 
  7.    local table_name 
  8.    local rs 
  9.    table_name = "t1" 
  10.         db_query("begin"
  11.   for i=1, 10000 do 
  12.       rs = db_query("SELECT name FROM ".. table_name .." WHERE id=" .. i) 
  13.   end 
  14. end 

set_vars()  如果需要使用更多的參數(shù),需要執(zhí)行這個(gè),前面需要引用下common.lua

db_connect()  是連接數(shù)據(jù)庫(kù)的,這個(gè)是sysbench里的函數(shù),不管那么多,直接用就行。

thread_init()  第一個(gè)調(diào)用的lua函數(shù)

event(thread_id) 可以把sql邏輯寫(xiě)到這里,–num-threads多少個(gè),就會(huì)同時(shí)調(diào)用多少個(gè),然后進(jìn)行壓測(cè)就ok.

  1. [root@sever3 sysbench]# ./sysbench --mysql-socket=/data/mysql_3309/mysql.sock --test=tests/db/test.lua --mysql-user=root --num-threads=12 --report-interval=10 --rand-type=uniform --max-time=30 --max-requests=0 --percentile=99 --mysql-db=test run 
  2. sysbench 0.5:  multi-threaded system evaluation benchmark 
  3.  
  4. Running the test with following options: 
  5. Number of threads: 12 
  6. Report intermediate results every 10 second(s) 
  7. Random number generator seed is 0 and will be ignored 
  8.  
  9.  
  10. Threads started! 
  11.  
  12. [  10s] threads: 12, tps: 0.00, reads/s: 64131.41, writes/s: 0.00, response time: 3291.51ms (99%) 
  13. [  20s] threads: 12, tps: 0.00, reads/s: 79980.83, writes/s: 0.00, response time: 1947.61ms (99%) 
  14. [  30s] threads: 12, tps: 0.00, reads/s: 78354.15, writes/s: 0.00, response time: 2418.21ms (99%) 
  15. OLTP test statistics: 
  16.     queries performed: 
  17.         read:                            2280000 
  18.         write:                           0 
  19.         other:                           228 
  20.         total:                           2280228 
  21.     transactions:                        0      (0.00 per sec.) 
  22.     deadlocks:                           0      (0.00 per sec.) 
  23.     read/write requests:                 2280000 (72705.35 per sec.) 
  24.     other operations:                    228    (7.27 per sec.) 
  25.  
  26. General statistics: 
  27.     total time:                          31.3595s 
  28.     total number of events:              228 
  29.     total time taken by event execution: 368.0393s 
  30.     response time: 
  31.          min:                                985.61ms 
  32.          avg:                               1614.21ms 
  33.          max:                               3756.13ms 
  34.          approx.  99 percentile:            3289.54ms 
  35.  
  36. Threads fairness: 
  37.     events (avg/stddev):           19.0000/3.83 
  38.     execution time (avg/stddev):   30.6699/0.42

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蒲江县| 江油市| 肥东县| 齐齐哈尔市| 平乐县| 丰都县| 屏东市| 霍山县| 台山市| 铜梁县| 襄城县| 霍邱县| 资阳市| 连城县| 贡嘎县| 札达县| 于都县| 宁南县| 永昌县| 旬阳县| 景谷| 乌拉特中旗| 阜宁县| 江阴市| 颍上县| 上犹县| 太保市| 碌曲县| 江油市| 西丰县| 怀来县| 鲁山县| 闸北区| 兰州市| 乌审旗| 舞阳县| 满城县| 淮南市| 余干县| 淮安市| 秦皇岛市|