龚哥哥 - 山里男儿 爱生活、做自己!
一次服务器高峰期宕机排查经历
发表于 2016-12-14 | 浏览(9975) | 服务器

服务器配置与环境

系统:CentOS7
内存:16G
CPU:8核
磁盘:两块(100G, 1T)
mysql:MySQL5.7
php:PHP5.6
带宽:10兆

将近百万访问量,每天上午9点左右和晚上10点左右必定会宕机。每次重启服务器后问题都没有了,没法知道具体是那块所造成。开始仔细想问题在那边,H5新闻站点基本上都是使用搜索引擎运行的,包括后来我开发的PC站点全部采用搜索引擎运行,不会有任何数据库操作。以为是mysql配置需要优化,所以就开始做起了服务器优化。

1、第一看见就是服务器IO过高造成了宕机,经过排查是mysql所占用,开始调整H5项目把直接操作数据库的部分都改成搜索引擎。重启后通过mysql命令行 show processlist; 查看正常,怀疑这个时候是脚本没运行,所以查不到问题了。

2、为了不影响业务运作,把线上有收益的业务迁移到其它服务器。磁盘重新分布,图片,数据库,搜索引擎全部分开,发现mysql磁盘过高,由此可以完全定位IO过高和mysql脱不了一点干系。

3、开始做mysql配置优化,不能让服务器宕机,经过两天的调试,服务器不宕机了,IO还是能够达到80%以上。平时偶尔也发现IO也不小。开始头疼了应用程序和服务器都优化了还是不见有个好的效果。

4、持续观察IO状况,在IO高的时候排查mysql,发现有部分sql运行时间都是在30秒以上,IO都是读的负载过高,肯定是这个原因导致的,这条sql所使用的字段没有索引,加上索引后,IO明显下降到5%左右。

5、当时心里非常激动,花了两天调试服务器各种配置优化。结果发现饶了这么大一个弯。最终还是因为mysql索引优化问题,最终问题还是出现在爬虫上面,每次爬虫跑的时候都会比对数据,再数据表越来越大的时候,字段没有索引就慢如蜗牛。虽然绕弯了还是有很大的收获的,在各种配置优化上也更明白的认识到了很多场景的优化方式。

6、很多时候都是本地开发好的项目,怎么玩都正常,只要上线都会有点问题,运营一段时间后问题也越来越多,这都是没有考虑到很多因素的问题。

阅读全文

TOP