如何利用loadrunner做mysql压力测试

2025-05-21 18:56:29
推荐回答(1个)
回答(1):

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);
  lr_log_message("%s",sql);
  mysql_query(db, sql);
  results2 = mysql_store_result(db);
  while((record = mysql_fetch_row(results2)))
  {
  lr_log_message("count = %d", record[0]);
  }
  mysql_free_result(results2);
  page = count/10;
  lr_log_message("page = %d", page);
  for(j=0;j< =page;j++)
  {
  sprintf(sql, "SELECT * FROM posts_jx3 WHERE tid = %d LIMIT %d,10;",r2,j);
  mysql_query(db, sql);
  lr_log_message("%s", sql);
  if (j>0) {
  results2 = mysql_store_result(db);
  while((record = mysql_fetch_row(results2)))
  {
  lr_log_message("pid = %d", record[0]);
  }
  mysql_free_result(results2);
  }
  }
  }
  else //新数据,大部分 80%
  {
  r2 = random(273505);
  r2 = r2+700000;
  sprintf(sql, "SELECT COUNT(*) AS count FROM posts_jx3 WHERE tid = %d;",r2);