大型项目XPO对数据库连接字符串调优

9 篇文章 0 订阅
本文探讨了在项目上线前遇到的数据库连接爆满问题,分析指出问题可能在于程序访问数据库的连接设置。重点关注了数据库连接字符串中的Timeout、MaxPoolSize等参数,以及MySQL的wait_timeout和interactive_timeout设置。建议通过合理调整这些参数来优化数据库连接,避免连接超时和资源浪费,并强调了程序中应当处理数据库丢失并尝试重新连接的重要性。
摘要由CSDN通过智能技术生成

某项目在上线前测试时出现数据连接爆满的问题。

数据库:MySQL 5.7.31

初步分析,问题不在数据库方面,而在程序访问数据库的数据库连接设置:

    <add name="ConnectionString" connectionString="XpoProvider=MySql;server=192.168.1.188;user id=root; password=xxxxxx; database=data;Pooling=true;Max Pool Size=30000;connect timeout=120;persist security info=true;CharSet=utf8" providerName="MySql.Data.MySqlClient" />
 

扩展信息:

原则:
代码控制的数据库Timeout <= 连接字符串中timeout <= 数据库设置的Timeout
代码控制的数据库MaxConnections <= 连接字符串中MaxConnections <= 数据库设置的MaxConnections <= 数据库版本MaxConnections限制数 <= 操作系统的连接数
数值设置形成明显数量差异

mysql sql语句修改timeout
set global wait_timeout=10;
set  global interactive_timeout=10;

在应用程序连接池关闭之后,相应的数据库连接在数据库端依然保持
应用程序连接池只能管理应用程序侧的Timeout

查看mysql5的手册,发现对wait_timeout的最大值分别是24天/365天(windows/linux)。以windows为 例,假设我们要将其设为21天,我们只要修改mysql5的配置文件“my.ini”(mysql5 installation dir),增加一行:wait_timeout=1814400。这个设置解决登录超时失败的问题不可取,甚至是错误的。程序代码中应该检测数据库丢失并尝试重新连接。


两个参数要同时设置  默认28800S 8小时
[mysqld]   
wait_timeout=20  
interactive_timeout=20 

连接字符串中加入timeout
MySQL   <add name="ConnectionString" connectionString="XpoProvider=MySql;server=127.0.0.1;user id=root; password=xxxxxx; database=data;Pooling=true;Max Pool Size=3000;connect timeout=120;persist security info=true;CharSet=utf8" providerName="MySql.Data.MySqlClient" />
MSSQL server=192.168.1.123; Port=1433; uid=root; pwd=root;database=data;pooling=true;min pool size=5;max pool size=512;connect timeout = 20
MySQL几个超时参数(timeout)解释
1. connect_timeout
mysql客户端在尝试与mysql服务器建立连接时,mysql服务器返回错误握手协议前等待客户端数据包的最大时限。默认10秒。

2. interactive_timeout / wait_timeout
mysql关闭交互/非交互连接前等待的最大时限。默认28800秒。

3. lock_wait_timeout 
sql语句请求元数据锁的最长等待时间,默认为一年。此锁超时对于隐式访问Mysql库中系统表的sql语句无效,但是对于使用select,update语句直接访问mysql库中标的sql语句有效。


4. net_read_timeout / net_write_timeout
mysql服务器端等待从客户端读取数据 / 向客户端写入数据的最大时限,默认30秒。

5. slave_net_timeout
mysql从复制连结等待读取数据的最大时限,默认3600秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_16215957

如果有帮助一杯咖啡奶茶均可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值