找到 OSChina 早上 8 点钟容易宕机的原因 ?
最近一段时间,OSChina 网站在早上 8 点出头的时候很容易因为数据库连接池爆满而导致网站宕机。表现的情况是数据库处理大量的查询,堆积大量并发连接,导致无法再连接到数据库,执行一个简单的查询速度也非常慢,数据库机器的 CPU 很高。
但事实上早上 8 点并非 OSC 网站的高峰期,高峰期的时候都不会挂,为什么偏偏在这么一个没多少人访问的时间点宕机呢?
找了很久没发现系统在 8 点这个时间点有什么特殊的任务要做,对数据库也做了一些调整,包括 “ MySQL Can’t Create Thread: Errno 11 ” 的问题。
但是问题依旧。
再次挨个检查系统 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 改为 * 后继续观察!
http://www.tuicool.com/articles/Ybe22e2
找到 OSChina 早上 8 点钟容易宕机的原因 ?的更多相关文章
- MySQL - 高可用性:少宕机即高可用?
我们之前了解了复制.扩展性,接下来就让我们来了解可用性.归根到底,高可用性就意味着 "更少的宕机时间". 老规矩,讨论一个名词,首先要给它下个定义,那么什么是可用性? 1 什么是可 ...
- 由Redis的hGetAll函数所引发的一次服务宕机事件
昨晚通宵生产压测,终于算是将生产服务宕机的原因定位到了,心累.这篇博客,算作一个复盘和记录吧... 先来看看Redis的缓存淘汰算法思维导图: 说明:当实际占用的内存超过Redis配置的maxmemo ...
- 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段
1. 问题:怎么给线上表加字段? 工作中最常遇到的问题,怎么给线上频繁使用的大表添加字段? 比如:给下面的用户表(user)添加年龄(age)字段. CREATE TABLE `user` ( `id ...
- 由于某IP大频率提交评论导致服务器宕机
早上突然收到dnspod的宕机通知(好久没收到了,有点手足无措). 服务器在上午10:40时达到85%.uptime显示cpu利用率达到35.不宕才怪. 按照之前的经验,应该是触发一个特别耗CPU的处 ...
- 用了OneAPM CT,宕机早知道!
Twitter 的公司网站和移动应用在 1 月 19 日早上出现宕机,导致全球部分地区用户无法正常访问.这次宕机影响了很多用户,英国和印度用户已经无法访问 Twitter .第三方监测机构 DownD ...
- mongodb副本集中其中一个节点宕机无法重启的问题
2-8日我还在家中的时候,被告知mongodb副本集中其中一个从节点因未知原因宕机,然后暂时负责代管的同事无论如何就是启动不起来. 当时mongodb的日志信息是这样的: 实际上这里这么长一串最重要的 ...
- 数据库主库从库宕机重启后binlog数据同步
由于阿里云经典网络迁移到专用网络,一不小心没有先预备方案调整网段, 导致实例无法以内网IP形式访问数据库,被迫进行数据库停机后网络网段调整,导致宕机了几个小时...被客户各种投诉爆了.. 基于这次数据 ...
- MySQL 系列(四) 主从复制、读写分离、模拟宕机、备份恢复方案生产环境实战
本章内容: 主从复制 简介原理 备份主库及恢复从库,配置从库生效 读写分离 如果主宕机了,怎么办? 双主的情况 MySQL 备份及恢复方案 备份单个及多个数据库 mysqldump 的常用参数 如何增 ...
- 修复ogg source端意外宕机造成的数据不同步
修复ogg source端意外宕机造成的数据不同步 分类: Oracle2016-04-28 11:50:40原文地址:修复ogg source端意外宕机造成的数据不同步 作者:十字螺丝钉 ogg s ...
随机推荐
- 1st day
学习配置环境,听的一脸懵逼,不过还好装好了,哈哈哈... <?php /*写一个函数,该函数可以将给定的任意个数的参数以指定的字符串串接起来成为一个长的字符串.该函数带2个或2个以上参数,其中第 ...
- Disposable microfluidic devices: fabrication, function, and application Gina S. Fiorini and Daniel T
Disposable microfluidic devices: fabrication, function, and application Gina S. Fiorini and Daniel T ...
- [Redux] Store Methods: getState(), dispatch(), and subscribe()
console.clear(); const counter = (state = 0, action) => { switch (action.type) { case 'INCREMENT' ...
- Android集成Mina NIO Socket
Mina简介 Apache MINA(Multipurpose Infrastructure 多功能框架 for Network Applications) 是 Apache 组织一个较新的项目,它为 ...
- Android学习手记(1) Activity跳转
新建Project,并将主页命名为MainActivity. 创建一个Activity 在App上“右键->New->Activity->Empty Activity”, 将新建的A ...
- MSSQL 字符串替换语句
MSSQL替换语句:update 表名 set 字段名=replace(cast(字段名 as varchar(8000)),'abc.com','123.com')例如:update PE_Arti ...
- XFire构建服务端Service的两种方式
1.原声构建: 2.集成spring构建 http://blog.csdn.net/carefree31441/article/details/4000436XFire构建服务端Service的两种方 ...
- MySQL命令mysqldump参数大全
参数参数说明--all-databases , -A导出全部数据库.mysqldump -uroot -p --all-databases--all-tablespaces , -Y导出全部表空 ...
- 【转】深入理解Java内存模型(三)——顺序一致性
数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序. 当代码 ...
- oracle 分布式数据库
分布式数据库的数据库链路是单向的