最近一段时间,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 点钟容易宕机的原因 ?的更多相关文章

  1. MySQL - 高可用性:少宕机即高可用?

    我们之前了解了复制.扩展性,接下来就让我们来了解可用性.归根到底,高可用性就意味着 "更少的宕机时间". 老规矩,讨论一个名词,首先要给它下个定义,那么什么是可用性? 1 什么是可 ...

  2. 由Redis的hGetAll函数所引发的一次服务宕机事件

    昨晚通宵生产压测,终于算是将生产服务宕机的原因定位到了,心累.这篇博客,算作一个复盘和记录吧... 先来看看Redis的缓存淘汰算法思维导图: 说明:当实际占用的内存超过Redis配置的maxmemo ...

  3. 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段

    1. 问题:怎么给线上表加字段? 工作中最常遇到的问题,怎么给线上频繁使用的大表添加字段? 比如:给下面的用户表(user)添加年龄(age)字段. CREATE TABLE `user` ( `id ...

  4. 由于某IP大频率提交评论导致服务器宕机

    早上突然收到dnspod的宕机通知(好久没收到了,有点手足无措). 服务器在上午10:40时达到85%.uptime显示cpu利用率达到35.不宕才怪. 按照之前的经验,应该是触发一个特别耗CPU的处 ...

  5. 用了OneAPM CT,宕机早知道!

    Twitter 的公司网站和移动应用在 1 月 19 日早上出现宕机,导致全球部分地区用户无法正常访问.这次宕机影响了很多用户,英国和印度用户已经无法访问 Twitter .第三方监测机构 DownD ...

  6. mongodb副本集中其中一个节点宕机无法重启的问题

    2-8日我还在家中的时候,被告知mongodb副本集中其中一个从节点因未知原因宕机,然后暂时负责代管的同事无论如何就是启动不起来. 当时mongodb的日志信息是这样的: 实际上这里这么长一串最重要的 ...

  7. 数据库主库从库宕机重启后binlog数据同步

    由于阿里云经典网络迁移到专用网络,一不小心没有先预备方案调整网段, 导致实例无法以内网IP形式访问数据库,被迫进行数据库停机后网络网段调整,导致宕机了几个小时...被客户各种投诉爆了.. 基于这次数据 ...

  8. MySQL 系列(四) 主从复制、读写分离、模拟宕机、备份恢复方案生产环境实战

    本章内容: 主从复制 简介原理 备份主库及恢复从库,配置从库生效 读写分离 如果主宕机了,怎么办? 双主的情况 MySQL 备份及恢复方案 备份单个及多个数据库 mysqldump 的常用参数 如何增 ...

  9. 修复ogg source端意外宕机造成的数据不同步

    修复ogg source端意外宕机造成的数据不同步 分类: Oracle2016-04-28 11:50:40原文地址:修复ogg source端意外宕机造成的数据不同步 作者:十字螺丝钉 ogg s ...

随机推荐

  1. JSP学习笔记(一):JDK的安装及环境变量的配置

    一.JDK的安装. JDK可以在Oracle(甲骨文)的官网下载,连接地址:http://www.oracle.com/technetwork/java/javase/downloads/index- ...

  2. 利用Jenkins自动部署工具间接构建kettle的调度平台

    关于Jenkins的介绍我就不说了,自己百度,因为这个工具调用脚本只是他的功能的冰山一角,其他功能我也不能理解,因为不是那个领域.        下面我就介绍一下为什么我们需要一个调度平台,以及学习完 ...

  3. Py3快速下载地址

    pip3.exe install 包名称 -i  http://mirrors.aliyun.com/pypi/simple  --trusted-host mirrors.aliyun.com

  4. LaTex希腊字母

    Name Symbol Command Alpha $\alpha$ $A$ \alpha A Beta $\beta$ $B$ \beta B Gamma $\gamma$ $\Gamma$ \ga ...

  5. where子句的具体含义

    今天同学让我帮他调代码,下面是出错的那句: txtSQL= "select * from student_Info where UserID='" & cboUserID. ...

  6. Python标准库:内置函数bytearray([source[, encoding[, errors]]])

    返回一个新字节数组.这个数组里的元素是可变的.而且每一个元素的值范围: 0 <= x < 256.能够通过"字节与字节数组操作"章节来查看相关字节数组的内容.以下说明一 ...

  7. C++[类设计] ini配置文件读写类config

      //in Config.h #pragma once #include <windows.h> #include <shlwapi.h> #pragma comment(l ...

  8. myqltransactionRollbackexception deadlock found when trying to get lock

    linux 下远程连接mysq 命令: mysql -h "1.0.0.1" -u username -p 1 获 取锁等待情况 可以通过检查 table_locks_waited ...

  9. Class loading in JBoss AS 7--官方文档

    Class loading in AS7 is considerably different to previous versions of JBoss AS. Class loading is ba ...

  10. java05 选择结构

    public static void main(String[] args) { /* * 张浩Java成绩大于90分,老师奖励他iPhone5 ,该怎么做呢? */ Scanner scanner= ...