一次应用访问数据库 IP 配成外网 IP 引发的血案

博客讲述了在生产环境中,由于应用配置错误,使用外网IP访问MongoDB导致数据库连接超时,进而引发大量数据推送失败的问题。通过排查,发现并非慢查询或系统资源紧张,而是大量连接未释放,占用连接池导致超时。调整为内网IP后,问题得到解决。
摘要由CSDN通过智能技术生成

我们生产的渠道对接系统出现大量推送运营商信息失败的现象。问题最终定位到 mongo 身上:
.00:03:05.425 [http-nio-9100-exec-53] ERROR c.d.r.s.i.CarrierOpRepServiceImpl - 
存储运营商数据失败,Timeout waiting for a pooled item after 120000 MILLISECONDS; 
nested exception is com.mongodb.MongoTimeoutException: 
Timeout waiting for a pooled item after 120000 MILLISECONDS
org.apache.catalina.valves.ErrorReportValveinvoke(ErrorReportValve.java:79)

冰冻三尺非一日之寒,其实 mongo 的问题早已暴露出来:基本信息的推送经常出现超时,前边也已定位到 mongo 操作比较慢这里,推送的成败完全看 mongo 的心情。耽搁于其他事情一时没抽出时间来慎重处理,如今运营商信息推送大量失败忽然爆发,mongo 的问题不得不提前排上处理日程。
首先想到的当然是 mongo 的慢查询,但查看 mongo 日志,很少有超过 150 ms 的 sql 语句。
其次想到的是系统资源吃紧,比如 CPU、内存利用率过高,因为我们的那台机器上同时部署有 nginx、mongo、mysql、java 等。但这个只能说是硬件限制,换句话说,完全可以靠垂直扩展硬件来提升你的系统性能——只要你有足够的钱。但最大限度的利用硬件资源是每个系统设计师应尽的职责所在。
根据笔者的经验,任何恶劣的生产问题,始终会有一个始作俑者的点(问题的制造者),然后各种问题(如内存、CP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值