标签:数据库 导致 环境 navicat 阻塞 大连 应用服务器 异步 ica
【现象】:EJF调用PLM的接口,短时间内出现大量下单请求,导致网络阻塞,数据库连接池达到上限,接口崩溃;
【环境】:服务器使用的是阿里云,centos7 + docker + redis + netcore,网络带宽5M,数据库最大连接数设置了3000;
【分析】:接口出现崩溃现象后——
1、检查了docker服务,正常,未挂;
2、本地使用 Navicat for Mysql 工具可以正常连接数据库;
3、检查应用服务器连接数据库,(发现无法连接,重启数据库服务恢复正常--昨天 & 正常可以连接,重启数据库服务仍旧异常--今天);
4、重启应用服务器,接口可以使用,但异常缓慢,后检查发现Redis服务为正常启动;
5、通过运维报告,峰值时段,数据流量超过了带宽上限 5M ,达到了 11M+--今天;昨天的峰值在 7M+ 左右,同样超过了带宽上限;
6、服务器上调用数据库也是走的外网地址,占用带宽;
【结论】:初步结论主要从两方面分析——
第一,带宽上限调高到了 50M,这样单个传输的最大值约在 50M/8 ≈ 6.25M,目前接口中最大数据量大约在 400 ~ 500 KB ;
第二,检查代码连接数据库是否正确,是否正确释放(这个没发现代码有啥不合理的地方);
【再论】:程序使用的是异步调用,如果短时间内大量高并发访问,带宽不足的前提下,很有可能导致传输拥堵。连接无法正常释放,新的请求继续开启新的连接,如此循环往复,这样可能就是导致连接数达到上限的可能原因。
标签:数据库 导致 环境 navicat 阻塞 大连 应用服务器 异步 ica
原文地址:https://www.cnblogs.com/lishidefengchen/p/11738545.html