记一次Sqlserver数据库存储过程调用导致的连接池耗尽事件

背景:

有两台数据库服务器IP分别为A和B。

(1)A服务器上有一个存储过程名称Proc_A,B服务器上有一个存储过程名称Proc_B, A服务器上有B服务器上远程数据库链接,B服务器上也有A服务器上远程数据库链接。

(2)在A服务器上面判断业务数据,如果是条件1,则走A服务器的自己的逻辑(Proc_A),如果是条件2,则在A服务器上远程调用B服务器上的逻辑(Proc_B)。

(3)在B服务器上面判断业务数据,如果是条件2,则走B服务器的自己的逻辑(Proc_B),如果是条件1,则在B服务器上远程调用A服务器上的逻辑(Proc_A),A服务器和B服务器的数据是物理隔离的。

(4)A服务器和B服务器的数据是物理隔离的。

发生过程:

在A服务器上调用B服务器上的逻辑,正常不在A上就在B上,因为设备故障导致了传入了非法的业务数据,导致判断既不是A服务器的逻辑,也不是B服务器上的逻辑,在A服务器上远程调用B,B服务器上又在调用A服务器的逻辑,默认产生了循环。

故障现象:

数据库通过客户端无法正常登录,提示链接通道占满

解决办法:

在A服务器和B服务器上只相互调用1次,阻断循环。

总结:

跨服务器互相调用数据,一定要注意是否会形成循环。

相关推荐
Mr.朱鹏8 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
摇滚侠8 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 数据库初始化机制 阅读笔记 36
数据库·spring boot·笔记
qiuhaipeng18 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
wxwx_bscxy3228 小时前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
剑之所向9 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库
词却10 小时前
数据库基础:DQL 数据查询语言
数据库·oracle
昌原的儿子LEO12 小时前
Linux IO多路复用与SQLite数据库核心知识点总结
linux·数据库·oracle
山岚的运维笔记12 小时前
mysql 专业笔记 -- 第 8 章:使用变量
运维·数据库·笔记·后端·学习·mysql·dba
聚美智数12 小时前
网安查询-备案查询-网络安全查询API接口介绍
网络·数据库·web安全
坐吃山猪13 小时前
【多线程】Semaphore使用
java·数据库·oracle·多线程