其他

一次线上事故

2016-12-23  本文已影响30人  小鱼嘻嘻

最近做了一个许愿活动,由于入口是在支付宝,主要针对大学生,没想到活动效果特别好,每天有将近100w pv,加上运营做了推广,在同一个时间点推了10w短信,瞬间高并发,数据库连接达到2000。加上我写的一个SQL三张表做了关联,关联字段没有索引,产生了慢查询,导致数据库连接池的资源被沾满,数据库被拖垮。服务不可用。

事故主要是因为的SQL引起的,我做了一些总结和反思:

1 对数据库的索引一直没有引起重视认为可有可无

2 对连表查询没有想过风险,没有做过执行计划分析

3 没有做相关压测,也没有考虑性能和压力问题

4 没有合理使用缓存,没有对缓存做很好的测试

5 过于乐观,盲目的乐观,代码质量不高,代码健壮性不够

6 自测不够全面,过于依赖测试,认为流程跑通就可以,没有覆盖到所有测试点,对缓存的测试不够全面

7 不够仔细,不够细心不是一个程序员应该有的毛病

反思:

1 加强数据库这边知识学习,每次创建表的时候必须考虑索引,每次需要做连接的时候必须做SQL分析,考虑连接是否走索引。

2  每一个接口,每一个功能都要考虑到并发问题,对高并发有相应的处理措施。

3 规范的打印日志,需要有入参和出参,关键点日志情况,以及Linux查询线上日志,学习Linux命令。快速定位线上问题。

4 对缓存的使用需要特别的谨慎,在自己测试的时候需要,第一次无缓存的裸奔测试,加上缓存的测试,加上缓存和缓存过期的测试。

5  认真仔细,细心,不盲目乐观。

对于一个工作两年多的程序员了,我觉得这些错误真的是不应该犯得低级错误,我觉得这次的错误对我的信心是极大的打击,我以前觉得自己技术很不错,现在看来我还是很初级的水平,我那些自信都是盲目的,希望这次教训会让我深深的记住。

接下来我需要加强,MySQL这块的学习(特别重要),Linux的学习(特别重要),redis,memcache的学习(特别重要)。

上一篇下一篇

猜你喜欢

热点阅读