OSChina 早上 8 点钟容易宕机的原因
最近一段时间,OSChina 网站在早上 8 点出头的时候很容易因为数据库连接池爆满而导致网站宕机。表现的情况是数据库处理大量的查询,堆积大量并发连接,导致无法再连接到数据库,执行一个简单的查询速度也非常慢,数据库机器的 CPU 很高。
但事实上早上 8 点并非 OSC 网站的高峰期,高峰期的时候都不会挂,为什么偏偏在这么一个没多少人访问的时间点宕机呢?
找了很久没发现系统在 8 点这个时间点有什么特殊的任务要做,对数据库也做了一些调整,包括 “MySQL Can’t Create Thread: Errno 11 ” 的问题。
但是问题依旧。
ina
再次挨个检查系统 crontab 中定义的作业。其中自动构建 Lucene 索引的作业引起了注意。
*/5 8-22 * * * /data/oschina/build.sh lucene_build
系统每 5 分钟执行一次增量索引构建,该构建过程仅在一天早上8点到晚上10点钟进行。
我记得当初这么设置的原因是有一个索引的构建容易出问题,为了避免出问题时没人处理,因此设置了这个时间段,后来一直没去调整。
再查看系统跑 lucene 的进程,我靠,那么那么那么多。。。。。
赶紧一个 killall java 杀掉所有的 lucene 索引构建进程,没几秒钟数据库的连接就下来了,系统恢复正常访问。
所以我现在有 80% 的把握能确定宕机问题就是因为这个索引构建进程导致的。而且索引构建本身不存在问题,问题出在时间点的设定上。试想白天高峰期时候 5 分钟执行一次从来没出过任何问题。也就是说经过了一个晚上(从晚上10点到早上8点这段时间)系统又有很多的数据,导致8点钟启动增量索引构建时一次性任 务量很大,无法在下一个5分钟到来之前结束,于是不断启动新的进程,于是不断连接到数据库,于是数据库性能急剧下降,于是挂机。
好吧,It’s my fault!
将 8-22 改为 * 后继续观察!
本文文字及图片出自 OSchina
你也许感兴趣的:
- 【外评】谷歌云计算 VMware 引擎 (GCVE) 私有云宕机事故
- 又翻车!微软一次更新引爆大规模连锁反应,Bing、Copilot等多个软件集体宕机五小时!
- 腾讯云4月8日故障复盘及情况说明
- 从谷歌 20 年的站点可靠性工程(SRE)中学到的 11 个经验教训
- B站宕机事故复盘:2021.07.13 我们是这样崩的
- 鹿晗关晓彤公布恋情却火了一位程序员
- 从AWS宕机事件说开去,热闹看完该学会什么?
- Google云服务故障原因公开,只因为同时做了两项升级
- Google是如何做到从不宕机的?
- 【外评】电脑从哪里获取时间?
我记得当初这么设置的原因是有一个索引的构建容易出问题
怎么不去解决这个问题