System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于数据库管理,具体涉及一种基于系统资源消耗量的mysql异常用户线程检测方法。
技术介绍
1、mysql是一个广泛使用的开源关系型数据库管理系统,广泛应用于web应用程序开发。mysql支持高并发访问,因此它经常用于需要大量读写操作的应用程序。由于mysql是多用户系统,当出现用户异常线程的时候会对数据库性能有很大的影响,出现异常线程引起mysql性能问题的时候,通常需要手动去分析慢日志、查询当前线程执行情况的方式去检测出现的异常线程,流程繁琐、容易出现误判和漏判的情况,具体地说,这些异常线程很可能会阻塞其他用户的请求,导致系统运行变慢、响应时间变长等,从而影响数据库的性能,甚至会导致系统崩溃。因此,需要一种方法来快速识别并定位mysql中的异常用户线程,以便及时采取措施解决这些问题。
技术实现思路
1、本专利技术的目的是提供一种基于系统资源消耗量的mysql异常用户线程检测方法,能够通过检测异常用户线程,帮助数据库管理员实时监控系统性能和资源消耗,以维护系统的最佳性能。
2、本专利技术采取的技术方案具体如下:
3、一种基于系统资源消耗量的mysql异常用户线程检测方法,包括:
4、获取performance_schema的开启状态;
5、若performance_schema未开启,则开启performance_schema,用于记录mysql的资源消耗;
6、获取活跃的用户线程;
7、获取活跃的
8、获取活跃的用户线程中各个线程的资源消耗值,并根据各个线程的资源消耗值,获取总资源消耗值;
9、根据资源消耗值,将各个线程的资源消耗值进行排序,获取前n个资源消耗最高的线程,记为高消耗线程,记录高消耗线程的线程id;
10、获取高消耗线程的信息;
11、根据各个线程的资源消耗值的排序,将高消耗线程的信息展示到前端,并增加一个快捷结束各个高消耗线程的按钮,用于释放系统资源。
12、在一种优选方案中,所述开启performance_schema的步骤,包括:
13、获取my.cnf配置文件中的performance_schema属性;
14、修改my.cnf配置文件中的performance_schema属性,其中,将performance_schema属性其设置为on;
15、重启mysql;
16、获取performance_schema.setup_instruments表和performance_schema.setup_consumers表的属性;
17、修改performance_schema.setup_instruments表和performance_schema.setup_consumers表,将包含有内存事件的采集器配置项开关以及等待事件的保存表配置开关打开。
18、在一种优选方案中,所述获取活跃的用户线程的步骤,包括:
19、获取performance_schema.threads表与information_schema.processlist表;
20、将performance_schema.threads表与information_schema.processlist表进行关联;
21、过滤掉非sleep状态的查询行;
22、获取过滤后所有活跃的用户线程在mysql内的线程id、在操作系统内的线程id的线程信息。
23、在一种优选方案中,所述线程信息包括线程的cpu、磁盘i/o和内存消耗。
24、在一种优选方案中,所述获取活跃的用户线程中各个线程的对应不同资源的资源使用量的步骤,包括:
25、获取活跃的用户线程中各个线程的cpu、磁盘i/o和内存消耗;
26、根据performance_schema.threads表,获取各个线程的cpu和磁盘i/o的资源使用量;
27、获取performance_schema.memory_summary_by_thread_by_event_name表;
28、将performance_schema.memory_summary_by_thread_by_event_name表与performance_schema.threads表进行关联;
29、获取各个线程的内存消耗的资源使用量。
30、在一种优选方案中,所述获取活跃的用户线程中各个线程的资源消耗值,并根据各个线程的资源消耗值,获取总资源消耗值的步骤,包括:
31、获取活跃的用户线程中各个线程的cpu、磁盘i/o和内存消耗的资源消耗值;
32、根据各个线程的cpu、磁盘i/o和内存消耗的资源消耗值,得到各个线程的cpu、磁盘i/o和内存消耗的资源消耗值总和;
33、根据各个线程的cpu、磁盘i/o和内存消耗的资源消耗值总和,获取各个线程的cpu、磁盘i/o和内存消耗的资源使用量分别占资源消耗值总和的资源消耗权重;
34、根据各个线程的cpu、磁盘i/o和内存消耗的资源消耗权重,获取各个线程的cpu、磁盘i/o和内存消耗的总资源消耗值。
35、在一种优选方案中,所述获取各个线程的cpu、磁盘i/o和内存消耗的总资源消耗值的步骤之后,还包括:
36、判断各个线程的总资源消耗值是否接近100;
37、若线程的总资源消耗值接近100,则表明该线程的资源消耗量大,该线程异常;
38、若线程的总资源消耗值远离100,则表明该线程的资源消耗量小,该线程稳定。
39、在一种优选方案中,所述根据资源消耗值,将各个线程的资源消耗值进行排序,获取前n个资源消耗最高的线程,记为高消耗线程,记录高消耗线程的线程id的步骤,包括:
40、获取各个线程的资源消耗值;
41、根据各个线程的资源消耗值的大小,按照资源消耗值的从高到低的顺序,排列各个线程;
42、按照资源消耗值从高到低的顺序,获取前n个资源消耗值的线程,记为高消耗线程;
43、记录高消耗线程的线程id。
44、在一种优选方案中,所述获取高消耗线程的信息的步骤,包括:
45、获取关联的performance_schema.threads表与information_schema.processlist表;
46、过滤高消耗线程的线程id,得到高消耗线程的信息,所述高消耗线程的信息包括线程连接标识符、用户名、用户来源地址、正在执行的sql语句和执行时长。
47、在一种优选方案中,所述根据各个线程的资源消耗值的排序,将高消耗线程的信息展示到前端,并增加一个快捷结束各个高消耗线程的按钮,本文档来自技高网...
【技术保护点】
1.一种基于系统资源消耗量的MySQL异常用户线程检测方法,其特征在于,包括:
2.根据权利要求1所述的基于系统资源消耗量的MySQL异常用户线程检测方法,其特征在于,所述开启performance_schema的步骤,包括:
3.根据权利要求1所述的基于系统资源消耗量的MySQL异常用户线程检测方法,其特征在于,所述获取活跃的用户线程的步骤,包括:
4.根据权利要求3所述的基于系统资源消耗量的MySQL异常用户线程检测方法,其特征在于,所述线程信息包括线程的CPU、磁盘I/O和内存消耗。
5.根据权利要求4所述的基于系统资源消耗量的MySQL异常用户线程检测方法,其特征在于,所述获取活跃的用户线程中各个线程的对应不同资源的资源使用量的步骤,包括:
6.根据权利要求5所述的基于系统资源消耗量的MySQL异常用户线程检测方法,其特征在于,所述获取活跃的用户线程中各个线程的资源消耗值,并根据各个线程的资源消耗值,获取总资源消耗值的步骤,包括:
7.根据权利要求6所述的基于系统资源消耗量的MySQL异常用户线程检测
8.根据权利要求6所述的基于系统资源消耗量的MySQL异常用户线程检测方法,其特征在于,所述根据资源消耗值,将各个线程的资源消耗值进行排序,获取前N个资源消耗最高的线程,记为高消耗线程,记录高消耗线程的线程ID的步骤,包括:
9.根据权利要求8所述的基于系统资源消耗量的MySQL异常用户线程检测方法,其特征在于,所述获取高消耗线程的信息的步骤,包括:
10.根据权利要求1所述的基于系统资源消耗量的MySQL异常用户线程检测方法,其特征在于,所述根据各个线程的资源消耗值的排序,将高消耗线程的信息展示到前端,并增加一个快捷结束各个高消耗线程的按钮,用于释放系统资源的步骤,包括:
...【技术特征摘要】
1.一种基于系统资源消耗量的mysql异常用户线程检测方法,其特征在于,包括:
2.根据权利要求1所述的基于系统资源消耗量的mysql异常用户线程检测方法,其特征在于,所述开启performance_schema的步骤,包括:
3.根据权利要求1所述的基于系统资源消耗量的mysql异常用户线程检测方法,其特征在于,所述获取活跃的用户线程的步骤,包括:
4.根据权利要求3所述的基于系统资源消耗量的mysql异常用户线程检测方法,其特征在于,所述线程信息包括线程的cpu、磁盘i/o和内存消耗。
5.根据权利要求4所述的基于系统资源消耗量的mysql异常用户线程检测方法,其特征在于,所述获取活跃的用户线程中各个线程的对应不同资源的资源使用量的步骤,包括:
6.根据权利要求5所述的基于系统资源消耗量的mysql异常用户线程检测方法,其特征在于,所述获取活跃的用户线程中各个线程的资源消耗值,并根...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。