ASP.NET Core MySql To many connections 异常排查解决

本篇文章比较偏笔记形式,记录了今天排查解决的一个异常,解决过程当中没有保存记录图片,因此未配图mysql

环境:ASP.NET Core 3.1sql

Mysql 驱动:mysqlconnector数据库

一.异常描述

今天在测试环境,测试工程师反应不少接口500错误,异常信息是 “To many connections”,由于是微服务架构,多个服务出现这个状况 ,而且有同事的navicat也链接不到MySql。架构

二.分析

根据此状况分析排除了代码缘由(这块我写的,因此结合现有状况作了排除)形成链接数爆掉,多是达到数据库的链接数限制。微服务

show variables like 'max_connections'; 查看最大链接数:100测试

show processlist; 统计目标数据库链接数达到了 100 满了。code

根据数据库过滤使用此SQL比较方便:SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where DB='<dbname>'接口

至此问题找到。图片

三.解决

当务之急是先行恢复数据库的使用,因此临时设置了链接数限制到1000(永久设置须要改mysql配置文件)ssl

SET GLOBAL max_connections = 1000;

执行后,服务恢复正常。

恢复后经过 show processlist; 观察链接数,几乎稳定在 10x,且发现有来自一个局域网的IP长时间占用了46个链接数,遂排查开发人员电脑IP,未发现匹配的。

根据IP统计链接数 SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST where HOST like '192.168.2.2%'

后问同事,才知晓MySql数据库链接信息提供给了测试工程师来编写测试脚本,而后过去排查,发现果真是测试工程师写的脚本问题,至此引起问题的缘由找到并解决。

因为是本地测试环境,因此并无对数据库的链接数限制作设置,用的默认值。

相关文章
相关标签/搜索