如何检测MYSQL仍正常提供运行

首先,楼主,mysql的连接被占光,出现这种现象,极有可能是你的程序有问题,或者你的业务设计的就有问题,怎么可能会占光呢?莫非是一个业务重新建立一个连接,而不是建立一个连接池,业务通过连接池去操作mysql?

检查mysql僵死有多种办法,snmp可以通过walk或者get来获得对应的状态,hrSWRunStatus后面的就是进程号,hrSWRunPath可以获得到你的mysql执行的命令,同时也有对应的进程号

snmpwalk -v 1 -c public localhost hrSWRunPath

然后可以获得如下内容

HOST-RESOURCES-MIB::hrSWRunPath.13364 = STRING: "redis-server"

HOST-RESOURCES-MIB::hrSWRunPath.14061 = STRING: "php-fpm: master process (/usr/local/php/etc/php-fpm.conf)"

HOST-RESOURCES-MIB::hrSWRunPath.15015 = STRING: "/usr/sbin/httpd"

HOST-RESOURCES-MIB::hrSWRunPath.15819 = STRING: "sleep"

HOST-RESOURCES-MIB::hrSWRunPath.20330 = STRING: "php-fpm: pool www"

HOST-RESOURCES-MIB::hrSWRunPath.21724 = STRING: "php-fpm: pool www"

然后比如我想检查redis-server的运行状态,那么就这么执行

[StevenLiu@liudeMacBook-Pro ~]$ snmpwalk -v 1 -c public localhost hrSWRunStatus.13364

HOST-RESOURCES-MIB::hrSWRunStatus.13364 = INTEGER: runnable(2)

[StevenLiu@liudeMacBook-Pro ~]$

上面是snmp的检测方式,runnable可以判断是否为僵尸进程

如果觉得那么做不方便,还是先检查为啥连接都被占空,这样才是解决根本

然后通过mysql连接接口去连接mysql检测就可以了,具体C代码实现

片段

#include

#include

#include

#include "./get_password.c"

MYSQL *mysql;

MYSQL_RES *result;

MYSQL_ROW sqlrow;

extern char *input_password(char pd[]);

void display_row(MYSQL *ptr);

char *get_name( char name[])

{

int i=0;

char ch;

while((ch=getchar())!='\n')

{

name[i++]=ch;

}

name[i]='\0';

return name;

}

int main()

{

int res;

char name[20],

pd[20];

mysql = mysql_init(NULL);

if(mysql)

printf("mysql init succeed!\n");

else

{

printf("mysql init failed!\n");

return -1;

}

printf("Input you name:\n");

get_name(name);

printf("Input Password:\n");

input_password(pd);

printf("\n");

mysql=mysql_real_connect(mysql, "localhost",name, pd, "test",0,NULL,0);

if(mysql)

printf("mysql connect succeed!\n");

else

{

printf("mysql connect failed!\n");

return -2;

}

res=mysql_query(mysql, "INSERT INTO STUDENT_TBL (id,name,age) values  ('','sbsb1','20'),('','sbsb2','21'),('','sbsb3','19')");

if(!res)

printf("Insert %lu rows.\n",(unsigned long)mysql_affected_rows(mysql));

else

{

printf("Insert failed:%d %s\n",mysql_errno(mysql),mysql_error(mysql));

return -3;

}

res=mysql_query(mysql, "select * from STUDENT_TBL where age='21'");

if(res)

{

printf("action failed:%d %s\n",mysql_errno(mysql),mysql_error(mysql));

return -4;

}

result = mysql_store_result(mysql);

if(result)

{

printf("Retrieved %lu rows.\n",(unsigned long)mysql_num_rows(result));

while (sqlrow=mysql_fetch_row(result) )

{

//  printf("fetching data...\n");

display_row(mysql);

}

if(mysql_errno(mysql))

{

printf("Retrive error:%s\n",mysql_error(mysql));

return -5;

}

}

mysql_free_result(result);

mysql_close(mysql);

printf("connection closed!\n");

getchar();

}

void display_row(MYSQL *ptr)

{

unsigned int field_num=0;

while (field_num

{

printf("%s\t",sqlrow[field_num++]);

}

printf("\n");

}

首先,楼主,mysql的连接被占光,出现这种现象,极有可能是你的程序有问题,或者你的业务设计的就有问题,怎么可能会占光呢?莫非是一个业务重新建立一个连接,而不是建立一个连接池,业务通过连接池去操作mysql?

检查mysql僵死有多种办法,snmp可以通过walk或者get来获得对应的状态,hrSWRunStatus后面的就是进程号,hrSWRunPath可以获得到你的mysql执行的命令,同时也有对应的进程号

snmpwalk -v 1 -c public localhost hrSWRunPath

然后可以获得如下内容

HOST-RESOURCES-MIB::hrSWRunPath.13364 = STRING: "redis-server"

HOST-RESOURCES-MIB::hrSWRunPath.14061 = STRING: "php-fpm: master process (/usr/local/php/etc/php-fpm.conf)"

HOST-RESOURCES-MIB::hrSWRunPath.15015 = STRING: "/usr/sbin/httpd"

HOST-RESOURCES-MIB::hrSWRunPath.15819 = STRING: "sleep"

HOST-RESOURCES-MIB::hrSWRunPath.20330 = STRING: "php-fpm: pool www"

HOST-RESOURCES-MIB::hrSWRunPath.21724 = STRING: "php-fpm: pool www"

然后比如我想检查redis-server的运行状态,那么就这么执行

[StevenLiu@liudeMacBook-Pro ~]$ snmpwalk -v 1 -c public localhost hrSWRunStatus.13364

HOST-RESOURCES-MIB::hrSWRunStatus.13364 = INTEGER: runnable(2)

[StevenLiu@liudeMacBook-Pro ~]$

上面是snmp的检测方式,runnable可以判断是否为僵尸进程

如果觉得那么做不方便,还是先检查为啥连接都被占空,这样才是解决根本

然后通过mysql连接接口去连接mysql检测就可以了,具体C代码实现

片段

#include

#include

#include

#include "./get_password.c"

MYSQL *mysql;

MYSQL_RES *result;

MYSQL_ROW sqlrow;

extern char *input_password(char pd[]);

void display_row(MYSQL *ptr);

char *get_name( char name[])

{

int i=0;

char ch;

while((ch=getchar())!='\n')

{

name[i++]=ch;

}

name[i]='\0';

return name;

}

int main()

{

int res;

char name[20],

pd[20];

mysql = mysql_init(NULL);

if(mysql)

printf("mysql init succeed!\n");

else

{

printf("mysql init failed!\n");

return -1;

}

printf("Input you name:\n");

get_name(name);

printf("Input Password:\n");

input_password(pd);

printf("\n");

mysql=mysql_real_connect(mysql, "localhost",name, pd, "test",0,NULL,0);

if(mysql)

printf("mysql connect succeed!\n");

else

{

printf("mysql connect failed!\n");

return -2;

}

res=mysql_query(mysql, "INSERT INTO STUDENT_TBL (id,name,age) values  ('','sbsb1','20'),('','sbsb2','21'),('','sbsb3','19')");

if(!res)

printf("Insert %lu rows.\n",(unsigned long)mysql_affected_rows(mysql));

else

{

printf("Insert failed:%d %s\n",mysql_errno(mysql),mysql_error(mysql));

return -3;

}

res=mysql_query(mysql, "select * from STUDENT_TBL where age='21'");

if(res)

{

printf("action failed:%d %s\n",mysql_errno(mysql),mysql_error(mysql));

return -4;

}

result = mysql_store_result(mysql);

if(result)

{

printf("Retrieved %lu rows.\n",(unsigned long)mysql_num_rows(result));

while (sqlrow=mysql_fetch_row(result) )

{

//  printf("fetching data...\n");

display_row(mysql);

}

if(mysql_errno(mysql))

{

printf("Retrive error:%s\n",mysql_error(mysql));

return -5;

}

}

mysql_free_result(result);

mysql_close(mysql);

printf("connection closed!\n");

getchar();

}

void display_row(MYSQL *ptr)

{

unsigned int field_num=0;

while (field_num

{

printf("%s\t",sqlrow[field_num++]);

}

printf("\n");

}


相关文章

  • 学生信息管理系统_本科毕业论文
  • 2010届本科生毕业设计 题目:_______ 作 者 姓 名: 学 号: 系(院) .专业: 软件工程系 指导教师姓名: 指导教师职称: 2010 年 月 日 注:请认真填写的姓名及学号信息, 并要求与学院规定的一致 摘要: 随着计算机应 ...查看


  • 软件评测管理系统
  • 1 引言 1.1 软件测试的背景和意义 随着计算机技术的迅速发展和越来越广泛深入的应用于国民经济和社会生活的各个方面,随着软件系统的规模和复杂性与日俱增,软件的生产成本和软件中存在的缺陷和故障造成的各类损失也大大增加,甚至会带来灾难性的后果 ...查看


  • 中控考勤机技术文档
  • 考勤机与电脑通讯不成功 一:TCP/IP连接不上 1. 设置IP地址: (1)电脑与考勤机直接连接,必须使用交叉网线(注1),考勤机IP地 址要与电脑IP地址在同一网段,最后一组数字不能相同. (2)考勤机与交换机连接,应使用直通网线,考勤 ...查看


  • snort入侵检测实验报告
  • 实验:入侵检测系统(Snort)的安装与配置 一.实验目的 学会WINDOWS下SNORT的安装与配置 二.实验环境 WinXP虚拟机 三.实验步骤与结果 一.在"我的电脑"中C盘中建立文件夹"zhangxia ...查看


  • Java编程入门教程
  • 第六章 Java Web开发环境搭建 本章主要内容包括:  文档样式概述  CSS 属性的定义  CSS中的版面布局  CSS 特殊用法  CSS 常用外观属性  常见疑难问题解答 本章主要介绍Java Web开发环境的搭建,分 ...查看


  • MySQL优化(二) MySQL 卓越资源
  • MySQL优化(二) 2007-06-24 23:24 来源: imysql.cn 作者:叶金荣 网友评论 0 条 浏览次数 99 7.2.1 EXPLAIN 语法(得到SELECT 的相关信息) EXPLAIN tbl_name 或者: ...查看


  • 图书馆管理系统 2
  • JIU JIANG UNIVERSITY 毕 业 论 文 题 目 基于PHP 的图书馆管理系统 英文题目 Management System for Mechanical 院 系 信息科学与技术学院 专 业 网络管理系统 班级学号 B121 ...查看


  • MySQL数据库在自动测试系统中的应用
  • 第3l卷增刊2 2011年12月 计算机应用 Joumal"ComPuterApplications v01.3l Suppl.2 Dec.2011 文章编号:1001-9081(2011)S2-0169一03 MySQL数据库在 ...查看


  • 网上购物系统概要设计说明书
  • 购物商城项目概要设计说明书 编写:XX 审核: 批准: 受控状态: 发布版次:1.0 编号: 日期:2011-03-22 日期: 日期: 是 日期:YYYY-MM-DD 变更记录 签字确认 目 录 1 引言 ................ ...查看


热门内容