利用loadrunner做mysql壓力測試

發表于:2011-08-31來源:未知作者:領測軟件測試網采編點擊數: 標簽:loadrunner;壓
最近跟測試組學習loadrunner的使用,測試組的姑娘們習慣用界面進行操作,而習慣linux平臺使用的我很多功能都使用代碼來實現了。 最近用loadrunner寫了一個模擬社區用戶壓測論壇數據庫的一個腳本,進行數據庫的壓力測試和優化工作。 用戶行為分

  最近跟測試組學習loadrunner的使用,測試組的姑娘們習慣用界面進行操作,而習慣linux平臺使用的我很多功能都使用代碼來實現了。

  最近用loadrunner寫了一個模擬社區用戶壓測論壇數據庫的一個腳本,進行數據庫壓力測試和優化工作。

  用戶行為分析:

  在社區中,看帖的人是發帖人的10倍以上,而看帖人大概80%以上都在看新帖,20以下的用戶有挖墳行為。

  因此,設定如此的比率:每11個用戶,1個發帖,8個看最近30%的帖,兩個看老的70%的帖。

  我的論壇帖子回復表大概是:973505個帖子的回復,兩千多萬的回帖。

  根據這些數據,配合mysql的c api,寫如下腳本:

  注:腳本的my_mysql_insert()函數是有問題的,多線程下有一個資源符沒處理好,因為還不太了解loadrunner的線程機制,所以留下了一個bug。

  在做完這個腳本后,我發現我們測試機性能都不錯,很難在一個5G大小的單表上主鍵查詢造成很大的壓力,所以,計劃把dz論壇架設,用php+mysql真實環境下進行壓測,這樣可以順便練習http函數下的loadrunner編程。

  globals.h

  #ifndef _GLOBALS_H

  #define _GLOBALS_H

  #include "lrun.h"

  #include "web_api.h"

  #include "lrw_custom_body.h"

  #include "modal_dialog_callbacks.h"

  #define random(x) (rand()%x)

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #endif // _GLOBALS_H

  

 

  vuser_init.c

  MYSQL *db;

  MYSQL_ROW record;

  vuser_init()

  {

  char sql[128];

  MYSQL_RES *results1;

  lr_load_dll("libmysql.dll");

  db = mysql_init(NULL);

  mysql_real_connect(db, "192.168.8.32", "root", "123456", "sunboyu_test", 3311, "/tmp/mysql3311.sock", 1);

  sprintf(sql, "show tables");

  mysql_query(db, sql);

  results1 = mysql_store_result(db);

  while((record = mysql_fetch_row(results1)))

  {

  lr_log_message("table = %s", record[0]);

  }

  mysql_free_result(results1);

  return 0;

  }

  vuser_end.c

  vuser_end()

  {

  mysql_close(db);

  mysql_server_end();

  return 0;

  }

  Action.c

  Action()

  {

  int r1 = 0;

  char sql[128];

  r1 = random(11); //10種用戶,8種正常訪問,兩種在挖墳

  lr_log_message(" %d", r1);

  if(r1==11)

  {

  my_mysql_insert();

  }

  else

  {

  my_mysql_query( r1 );

  }

  return 0;

  }

  int my_mysql_query( int randid )

  {

  int r2 = 0;

  int j = 0;

  int count = 0;

  int page = 0;

  char sql[128];

  MYSQL_RES *results2;

  if(randid<2) //老數據,小部分 20%

  {

  r2 = random(700000);

  sprintf(sql, "SELECT COUNT(*) AS count FROM posts_jx3 WHERE tid = %d;",r2);

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97