生产监控报警一:阿里云 RDS 监控报警

前言

    早上挤地铁的时候收到了阿里云的监控报警,RDS 的 CPU 的负载达到了 90%

生产监控报警一:阿里云 RDS 监控报警

 

排查

    因为是昨天晚上上的线,微信公众号也是在晚上才放出活动链接,当时也是考虑了可能会到来的使用量,把后台活动负载到了 3 台服务器,可是没想到竟然是 mysql 报出了告警。

 

    查看了数据库的使用量,发现总共有 3 w 多条的插入记录,而 CPU 的使用率确一直保持在 90% 不下来,正常情况下,2核4G 的一台 mysql 数据库不可能被这点插入量就给干趴下了,而且只是 CPU 的使用率特别高,内存的使用率确很少,问题可能出在 SQL 执行上面,部分 SQL 没有优化好导致的。

    百万级别的访问量才算是大数据,需要从架构的层面去考虑,3万的访问量并不需要在架构上优化,直连可能都可以顶住。

 

    看了下阿里云自带的 RDS 监控,里面的 SQL 执行记录,发现有几条 sql 的执行特别慢,每条语句执行的时间快 3 秒了,没有优化好。

生产监控报警一:阿里云 RDS 监控报警

检查了表结构,发现是缺少索引导致的,添加了索引,RDS 的CPU 这才恢复了正常。

 

当一张表的数据过大的时候,添加索引需要选择半夜用户量少的时候,因为百万级别的表添加索引可能需要 7、8个小时才能建好索引。

 

    一开始也怀疑了是遭到了攻击,后台想想是错的,因为生产的数据库是添加过白名单的,没有在白名单里面的 IP 是不可能操作数据库的。

 

简单防止 SQL 注入、DDoS 等攻击

    简单来说就是通过屏蔽攻击的 IP 地址来保护服务器。

    linux中iptables屏蔽指定ip及ip段。

    屏蔽某个 IP:

    iptables -I INPUT -s xxx.xxx.xxx.xxx -j DROP

    屏蔽指定 IP 段:

    iptables -I INPUT -s 192.168.0.0/24 -j DROP

 

转载于:https://my.oschina.net/u/2470065/blog/779054