使用LoadRunner监测MySQL数据库的性能
2023-09-11 14:20:55 时间
方法一:要想使用LoadRunner监测MySQL数据库的性能,LoadRunner没有提供直接监测 MySQL的功能,所以,我们需要借助sitescope监控,然后在LoadRunner显示sitescope监测结果,这样间接地监控MySQL性能。
相信大家对LoadRunner应该十分熟悉了,所以在这里,我大概介绍下sitescope的安装和使用。
sitescope是安装在被监测数据库所在的计算机上的,是一个比较新的软件,在网上很难下载在免费使用版,我是找了一下午才在一个论坛里找到一位老好心人上传的7.9.5版本和license,相当的好用,真是要谢谢这位兄台了!下载地址:http://bbs.51testing.com/viewthread.php?tid=80283
软件下载好后,安装应该很容易了。安装好后系统重启,再次开机时,会自动跳出sitescope的初始网页,要求输入license等资料。保存后自动跳出网页提示,输入对应的网址进入sitescope主界面。(sitescope是运行在浏览器上的一款软件,每次要打开时,只要打开浏览器输入对应的网址即可进入对应的sitescope主界面。)
监测MySQL需要使用到JDBC驱动程序,为了让sitescope能够监测到 MySQL。下载地址:http://www.mysql.com/downloads/connector/j/
下载成功后,解压文件,把“mysql-connector-java-5.1.12-bin.jar”这个压缩文件复制到(sitescope安装目录下)sitescope\java\lib\ext下,重启系统。
进入sitescope主界面,点击“create group”,输入自定义的组名,即可成功添加group。
进入新建的组,在“Add to Group”一栏下点击monitor,新添加monitor。
然后“Add Database Query monitor”。
这里是关键:
Database Connection URL:jdbc:mysql:// database hostname [: tcp port ]/ database
for example:要连接MySQL的数据库aBigDatabase,用MySQL的标准端口3306,则为 jdbc:mysql://206.168.191.19/aBigDatabase
Query:show status where variable_name like ’innodb_buffer_pool_pages_total’
Database Driver:org.gjt.mm.mysql.Driver
updates时间和title可以根据自己的需要设置。
Database User Name和Database Password需要咨询数据库管理员,拿到超级用户的用户名和密码。
点击“Add”,保存即可。到此为止,sitescope已经能够监测到数据的信息了。接下去是连接LoadRunner。
打开 LoadRunner的Controller,在“run”中添加“sitescope”,即可成功监测到被测数据库的信息了。哈哈,大功告成了!!!
备注:
MercyrySiteScope介绍:它是一款无代理监测解决方案,可确保分布式IT基础架构——如服务器、操作系统、网络设备、网络服务、应用和应用组件的可用性和性能。这款主动的、基于Web界面的基础架构监测解决方案是非常简洁的,而且完全根据客户度身定制,无需在您的上线系统中增加额外的代理。
SiteScope为上线系统提供24×7的监控服务,为维护工程师及时发现问题提供帮助,确保系统架构内一切组建的正常运作。SiteScope在大量增加检测周期的同时也降低了维护人员的工作成本 。
SiteScope能够监控UNIX服务器资源、windows服务器资源、weblogic应用服务器、IIS应用服务器、Oracle数据库、 SQLServer数据库、F5、URL地址、Ping、内存、CPU、磁盘空间、服务等等系统架构内各种组建的运行状况;监控器按照指定频率对目标进行检测,一旦发现异常会及时向管理员发送意外事件的报警,警报可以通过声音提醒、email、短信等方式发送;另外,SiteScope还可以生成监测活动的汇总报告,该对象从日志文件中读取历史信息,接着总结、筛选信息,并生成图表格式的报告。
SiteScope利用Database Query monitor监控指定的数据库,通过SiteScope监控器的SHOW STATUS命令,获得相应数据,命令如下:
show status where variable_name like ’innodb_buffer_pool_pages_total’
为了确保监控请确认LoadRunner and SiteScope之间的端口, SiteScope和MySQL必须打开TCP 8888和TCP 3306 . 还有SiteScope要监控必须要确保有JDBC的安装。
以下为监控前需要注意的地方:
1. SiteScope to be deployed.
2. Sufficient license points for Database Query monitor.
3. TCP 8888 (default) opened two-way for LoadRunner to SiteScope.
4. TCP 3306 (default) opened two-way for SiteScope to MySQL.
5. Monitoring privileges for SiteScope to monitor MySQL.
6. JDBC driver to be installed on SiteScope.
7. Have knowledge of the counter you want to monitor.
方法二:通过编写脚本来进行监控
// mysql_dll.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include "stdlib.h"
MYSQL *conn=NULL;
MYSQL_RES *p_res_ptr=NULL;
MYSQL_ROW sqlrows;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
extern "C" int _declspec(dllexport) init_mysql_connection(char *str_server,char *str_username,char *str_pwd,char *str_Table)
{
conn=mysql_init(NULL);
if(!conn)
{
printf("\nFailed to initate MySQL connection");
return 1;
exit(0);
}
else
{
printf("\nSuccess to initate MySQL connection");
if (!mysql_real_connect(conn,str_server,str_username,str_pwd,str_Table,0,NULL,0))
{
printf( "Failed to connect to MySQL: Error: %s\n", mysql_error(conn));
}
else
{
printf("\nLogged on to %s sucessfully",str_server);
return 0;
}
return 0;
}
}
extern "C" int _declspec(dllexport) close_mysql_connection()
{
if(conn=NULL)
{
printf("\nConnection is Null");
return 1;
exit(0);
}
else
{
mysql_free_result(p_res_ptr);
printf("\nClose connection");
mysql_close(conn);
return 0;
}
}
//"show status like \qcache%\"
extern "C" int _declspec(dllexport) get_mysql_table_query(char *str_query)
{
int res=0;
res=mysql_query(conn,str_query);
if(res)
{
printf("Failed to mysql query: Error: %s\n", mysql_error(conn));
return 1;
}
else
{
printf("\nSucess in Mysql Query");
return 0;
}
}
extern "C" int _declspec(dllexport) get_mysql_query_data(char *str_query,char *str_data)
{
unsigned long u1_numrow=0;
unsigned int i_index = 0;
p_res_ptr=mysql_use_result(conn);
if(p_res_ptr){
while((sqlrows=mysql_fetch_row(p_res_ptr))){
if(*sqlrows[0]=*str_query)
{
strcpy(str_data,sqlrows[1]);
}
}
}
return NULL;
}
lr 9.1中代码:
Action()
{
int i=0;
double x;
char *str_data;
str_data=(char *)malloc(20*sizeof(char));
lr_load_dll("D:\\vc\\mysql_dll\\Debug\\mysql_dll.dll");
i= init_mysql_connection("localhost","root","123456","mysql");
lr_output_message("%d",i);
for(;;)
{
get_mysql_query_data("Qcache_hits",str_data);
i=get_mysql_table_query("show status like \qcache%\");
lr_output_message("%d",i);
x = atof(str_data);
lr_user_data_point("hits",x);
lr_think_time(5);
}
lr_output_message("%d",x);
close_mysql_connection();
return 0;
}
索引对MYSQL性能的影响 索引到底对性能有多少影响? 这个问题估计是很多MySQL小白好奇的问题。当然我也是一样。因为之前的时候,并没有对索引有太多的注意,而且之前的工作经历,因为数据量很小,索引所起到的作用并不是很大,所以也没有太大注意。
手把手教你Prometheus + Granafa实现mysql 性能监测部署 数据库性能监控可以说是十分重要,能否自行搭建环境实现像阿里云或是腾讯云那样直观的展示不同维度数据的功能?答案是肯定的。下面详细说明一下安装部署过程以及过程中出现的问题,希望对你有所帮助!
Intel PAUSE指令变化如何影响MySQL的性能 x86、arm指令都很多,无论是应用程序员还是数据库内核研发大多时候都不需要对这些指令深入理解,但是 Pause 指令和数据库操作太紧密了,本文通过一次非常有趣的性能优化来引入对 Pause 指令的理解,期望可以事半功倍地搞清楚 CPU指令集是如何影响你的程序的。
ELK搭建(六):搭建mysql性能、执行效率监控平台 mysql作为市场的主流数据库,承载了大部分公司的核心业务数据,同时也是大多数业务的底层存储。 针对mysql运行情况的监控必不可少,之前我们讲解了如何搭建mysql慢日志、错误日志的监控平台。 那么本期,我们针对mysql集群、性能、各类sql语句执行情况、服务状态等指标来搭建一个可视化的监控平台,方便我们实时了解mysql资源利用率、sql执行效率、访问压力等等。
相信大家对LoadRunner应该十分熟悉了,所以在这里,我大概介绍下sitescope的安装和使用。
sitescope是安装在被监测数据库所在的计算机上的,是一个比较新的软件,在网上很难下载在免费使用版,我是找了一下午才在一个论坛里找到一位老好心人上传的7.9.5版本和license,相当的好用,真是要谢谢这位兄台了!下载地址:http://bbs.51testing.com/viewthread.php?tid=80283
软件下载好后,安装应该很容易了。安装好后系统重启,再次开机时,会自动跳出sitescope的初始网页,要求输入license等资料。保存后自动跳出网页提示,输入对应的网址进入sitescope主界面。(sitescope是运行在浏览器上的一款软件,每次要打开时,只要打开浏览器输入对应的网址即可进入对应的sitescope主界面。)
监测MySQL需要使用到JDBC驱动程序,为了让sitescope能够监测到 MySQL。下载地址:http://www.mysql.com/downloads/connector/j/
下载成功后,解压文件,把“mysql-connector-java-5.1.12-bin.jar”这个压缩文件复制到(sitescope安装目录下)sitescope\java\lib\ext下,重启系统。
进入sitescope主界面,点击“create group”,输入自定义的组名,即可成功添加group。
进入新建的组,在“Add to Group”一栏下点击monitor,新添加monitor。
然后“Add Database Query monitor”。
这里是关键:
Database Connection URL:jdbc:mysql:// database hostname [: tcp port ]/ database
for example:要连接MySQL的数据库aBigDatabase,用MySQL的标准端口3306,则为 jdbc:mysql://206.168.191.19/aBigDatabase
Query:show status where variable_name like ’innodb_buffer_pool_pages_total’
Database Driver:org.gjt.mm.mysql.Driver
updates时间和title可以根据自己的需要设置。
Database User Name和Database Password需要咨询数据库管理员,拿到超级用户的用户名和密码。
点击“Add”,保存即可。到此为止,sitescope已经能够监测到数据的信息了。接下去是连接LoadRunner。
打开 LoadRunner的Controller,在“run”中添加“sitescope”,即可成功监测到被测数据库的信息了。哈哈,大功告成了!!!
备注:
MercyrySiteScope介绍:它是一款无代理监测解决方案,可确保分布式IT基础架构——如服务器、操作系统、网络设备、网络服务、应用和应用组件的可用性和性能。这款主动的、基于Web界面的基础架构监测解决方案是非常简洁的,而且完全根据客户度身定制,无需在您的上线系统中增加额外的代理。
SiteScope为上线系统提供24×7的监控服务,为维护工程师及时发现问题提供帮助,确保系统架构内一切组建的正常运作。SiteScope在大量增加检测周期的同时也降低了维护人员的工作成本 。
SiteScope能够监控UNIX服务器资源、windows服务器资源、weblogic应用服务器、IIS应用服务器、Oracle数据库、 SQLServer数据库、F5、URL地址、Ping、内存、CPU、磁盘空间、服务等等系统架构内各种组建的运行状况;监控器按照指定频率对目标进行检测,一旦发现异常会及时向管理员发送意外事件的报警,警报可以通过声音提醒、email、短信等方式发送;另外,SiteScope还可以生成监测活动的汇总报告,该对象从日志文件中读取历史信息,接着总结、筛选信息,并生成图表格式的报告。
SiteScope利用Database Query monitor监控指定的数据库,通过SiteScope监控器的SHOW STATUS命令,获得相应数据,命令如下:
show status where variable_name like ’innodb_buffer_pool_pages_total’
为了确保监控请确认LoadRunner and SiteScope之间的端口, SiteScope和MySQL必须打开TCP 8888和TCP 3306 . 还有SiteScope要监控必须要确保有JDBC的安装。
以下为监控前需要注意的地方:
1. SiteScope to be deployed.
2. Sufficient license points for Database Query monitor.
3. TCP 8888 (default) opened two-way for LoadRunner to SiteScope.
4. TCP 3306 (default) opened two-way for SiteScope to MySQL.
5. Monitoring privileges for SiteScope to monitor MySQL.
6. JDBC driver to be installed on SiteScope.
7. Have knowledge of the counter you want to monitor.
方法二:通过编写脚本来进行监控
// mysql_dll.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include "stdlib.h"
MYSQL *conn=NULL;
MYSQL_RES *p_res_ptr=NULL;
MYSQL_ROW sqlrows;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
extern "C" int _declspec(dllexport) init_mysql_connection(char *str_server,char *str_username,char *str_pwd,char *str_Table)
{
conn=mysql_init(NULL);
if(!conn)
{
printf("\nFailed to initate MySQL connection");
return 1;
exit(0);
}
else
{
printf("\nSuccess to initate MySQL connection");
if (!mysql_real_connect(conn,str_server,str_username,str_pwd,str_Table,0,NULL,0))
{
printf( "Failed to connect to MySQL: Error: %s\n", mysql_error(conn));
}
else
{
printf("\nLogged on to %s sucessfully",str_server);
return 0;
}
return 0;
}
}
extern "C" int _declspec(dllexport) close_mysql_connection()
{
if(conn=NULL)
{
printf("\nConnection is Null");
return 1;
exit(0);
}
else
{
mysql_free_result(p_res_ptr);
printf("\nClose connection");
mysql_close(conn);
return 0;
}
}
//"show status like \qcache%\"
extern "C" int _declspec(dllexport) get_mysql_table_query(char *str_query)
{
int res=0;
res=mysql_query(conn,str_query);
if(res)
{
printf("Failed to mysql query: Error: %s\n", mysql_error(conn));
return 1;
}
else
{
printf("\nSucess in Mysql Query");
return 0;
}
}
extern "C" int _declspec(dllexport) get_mysql_query_data(char *str_query,char *str_data)
{
unsigned long u1_numrow=0;
unsigned int i_index = 0;
p_res_ptr=mysql_use_result(conn);
if(p_res_ptr){
while((sqlrows=mysql_fetch_row(p_res_ptr))){
if(*sqlrows[0]=*str_query)
{
strcpy(str_data,sqlrows[1]);
}
}
}
return NULL;
}
lr 9.1中代码:
Action()
{
int i=0;
double x;
char *str_data;
str_data=(char *)malloc(20*sizeof(char));
lr_load_dll("D:\\vc\\mysql_dll\\Debug\\mysql_dll.dll");
i= init_mysql_connection("localhost","root","123456","mysql");
lr_output_message("%d",i);
for(;;)
{
get_mysql_query_data("Qcache_hits",str_data);
i=get_mysql_table_query("show status like \qcache%\");
lr_output_message("%d",i);
x = atof(str_data);
lr_user_data_point("hits",x);
lr_think_time(5);
}
lr_output_message("%d",x);
close_mysql_connection();
return 0;
}
====================================分割线================================
最新内容请见作者的GitHub页:http://qaseven.github.io/
索引对MYSQL性能的影响 索引到底对性能有多少影响? 这个问题估计是很多MySQL小白好奇的问题。当然我也是一样。因为之前的时候,并没有对索引有太多的注意,而且之前的工作经历,因为数据量很小,索引所起到的作用并不是很大,所以也没有太大注意。
手把手教你Prometheus + Granafa实现mysql 性能监测部署 数据库性能监控可以说是十分重要,能否自行搭建环境实现像阿里云或是腾讯云那样直观的展示不同维度数据的功能?答案是肯定的。下面详细说明一下安装部署过程以及过程中出现的问题,希望对你有所帮助!
Intel PAUSE指令变化如何影响MySQL的性能 x86、arm指令都很多,无论是应用程序员还是数据库内核研发大多时候都不需要对这些指令深入理解,但是 Pause 指令和数据库操作太紧密了,本文通过一次非常有趣的性能优化来引入对 Pause 指令的理解,期望可以事半功倍地搞清楚 CPU指令集是如何影响你的程序的。
ELK搭建(六):搭建mysql性能、执行效率监控平台 mysql作为市场的主流数据库,承载了大部分公司的核心业务数据,同时也是大多数业务的底层存储。 针对mysql运行情况的监控必不可少,之前我们讲解了如何搭建mysql慢日志、错误日志的监控平台。 那么本期,我们针对mysql集群、性能、各类sql语句执行情况、服务状态等指标来搭建一个可视化的监控平台,方便我们实时了解mysql资源利用率、sql执行效率、访问压力等等。
相关文章
- MySQL数据库查找多个字段值全部相同的记录
- 【Mysql 学习】mysqld_safe:MySQL服务器启动脚本
- 【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端
- 【MySQL】数据库性能测试
- 【MySql】mysql 数据库数据订正
- MYSQL 如何完全卸载数据库
- php操作mysql数据库的基本类
- MySQL查看数据库性能常用命令
- 性能测试:监控mysql数据库
- MySql修改数据库编码为UTF8
- 每天将MYSQL SLOW QUERY REPORT分发到各个邮箱供分析改善数据库性能-PYTHON
- 使用mysql-connector-python操作MYSQL数据库
- EasyDSS流媒体服务器软件对数据库Sqlite3和MySQL的同时支持说明
- 使用ABP EntityFramework连接MySQL数据库
- 修改mysql/MariaDB数据库的端口号+远程
- 数据库内核月报 - 2015 / 10-MySQL · 特性分析 · MySQL权限存储与管理
- ngrinder groovy 更新mysql数据库数据
- MYsql 数据库密码忘记(Window)-2(mysql 5.7)
- MySQL数据库加密和解密~认证登陆密码(mysql.user)和MySQL不区分大小写
- 96.第十九章 MySQL数据库 -- 多表查询(六)
- mysql数据库性能优化参考——筑梦之路
- mysql 数据库 分表后 怎么进行分页查询?Mysql分库分表方案?
- mysql数据库安装配置
- MySQL数据库锁
- MySQL数据库性能优化由浅入深(表设计、慢查询、SQL索引优化、Explain分析、Show Profile分析、配置优化)
- Jmeter——MySQL数据库性能分析以及计划书模板(六)
- php备份下载mysql数据库