非常非常抱歉!2016年3月7日15:44-16:39,由于阿里云RDS(云数据库)故障,造成全站不能正常访问,给您带来了很大很大的麻烦,恳请您的谅解!

故障是在15:44开始出现的,应用日志中出现大量这样的错误:

System.Data.SqlClient.SqlException (0x80131904): Logon failed for login '...' due to trigger execution.
当前命令发生了严重错误。应放弃任何可能产生的结果。
在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
...
System.Data.SqlClient.SqlException (0x80131904): Logon failed for login '...' due to trigger execution.
A severe error occurred on the current command. The results, if any, should be discarded.

15:55,我们向阿里云提交了紧急工单。

16:16,我们怀疑是数据库连接被RDS限制的原因,在工单中进一步提交了我们的怀疑。

16:17,20多分钟过去,阿里云客服竟然无任何响应,而且是紧急工单。无奈之下,进行一键投诉。

16:19,终于有客服响应了,本以为救星出现了,哪知是火上浇油!这时我们已经确认是数据库连接数限制的原因,可是客服的不专业让人有理说不清,当时那种“叫天天不应,叫地地不灵”的无助让人崩溃。

16:39,直到这时(已经过去了40多分钟),阿里云客服才确认是数据库连接数限制的问题并进行了调整,调整之后,立马恢复正常。

故障原因分析:

好端端的,为什么数据库连接数限制会被突然修改?

阿里云RDS实例对数据库连接数有着霸道的限制,这个限制只针对连接总数,却不区分是否活跃。对于访问量稍微大一点的网站,RDS的默认数据库连接数根本不够用,因为数据库连接池是网站应用的标配,每台服务器都要在连接池中保持一定数量的数据库连接,服务器越多,连接数就越多。为了解决这个问题,阿里云针对这样的客户对进行了特殊设置,我们就是这样的客户之一。但阿里云在发布RDS产品更新时,有时会不小覆盖会这个特殊设置,之前我们也遇到过一次,这次很可能是同样的原因。

来自阿里云的故障原因解释:

故障是因为我们在2015年12月22日对这个RDS实例进行了升级,升级时数据库连接数限制被自动重置为默认值(虽然我们在RDS控制台看到的一直是特殊设置值),今天下午正好连接数超过了默认限制值(虽然我们在RDS控制台系统资源监控中看到的连接数没有超过默认限制值,阈值报警没有触发)。

对故障根源的分歧:

阿里云认为错在我们使用了特殊设置,他们最多只需做好对特殊设置的兼容。

而我们认为错在RDS对数据库连接数限制的机制不合理,特殊设置是为之所迫,应该改进连接数限制机制,不要像现在这么霸道。

抱歉!15:44-16:39阿里云RDS故障造成全站不能正常访问的更多相关文章

  1. [网站公告]18:07-18:20阿里云SLB故障造成网站不能正常访问

    (注:由于阿里云SLB管理控制台监控数据不准,实际故障时间是18:07-18:20.) 17:55-18:2018:07-18:20,我们使用的阿里云SLB(负载均衡)中有3台出现突发故障,造成全站无 ...

  2. 重磅干货免费下载!阿里云RDS团队论文被数据库顶会SIGMOD 2018收录

    ACM SIGMOD数据管理国际会议是由美国计算机协会(ACM) 数据管理专业委员会(SIGMOD)发起.在数据库领域具有最高学术地位的国际性学术会议. SIGMOD和另外两大数据库会议VLDB.IC ...

  3. 云上的芯脏病:奇怪的阿里云 RDS 数据库突发 CPU 近 100% 问题

    最近遇到了奇怪的阿里云 RDS 数据库突发 CPU 近 100% 问题,遇到了3次. 第一次是10月12日(周六)凌晨 3:24 负载极低的时候开始出现,早上发现后进行了主备切换,恢复了正常. 第二次 ...

  4. 云计算之路-阿里云上:数据库连接数过万的真相,从阿里云RDS到微软.NET Core

    在昨天的博文中,我们坚持认为数据库连接数过万是阿里云RDS的问题,但后来阿里云提供了当时的数据库连接情况,让我们动摇了自己的想法. 帐户 连接数 A 4077 B 3995 C 741 D 698 E ...

  5. 【故障公告】阿里云 RDS 数据库服务器 CPU 100% 造成全站故障

    非常非常抱歉,今晚 19:34 ~ 21:16 园子所使用的阿里云 RDS 数据库服务器突然出现 CPU 100% 问题,造成全站无法正常访问,由此您带来了很大的麻烦,请您谅解. 故障经过是这样的.1 ...

  6. 【故障公告】升级阿里云 RDS SQL Server 实例故障经过

    昨天晚上,我们使用的阿里云 RDS SQL Server 2008 R2 实例突然出现持续 CPU 100% 问题,后来我们通过重启实例恢复了正常(详见故障公告).但是在恢复正常后发现了新问题,这台 ...

  7. 为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!

    2019年5月29日15时,阿里云RDS for MySQL 8.0正式上线,使得阿里云成为紧跟社区步伐,发布MySQL最新版本的云厂商.RDS for MySQL 8.0 产品是阿里云推出的 MyS ...

  8. 阿里云 RDS 数据库又发 CPU 近 100% 的“芯脏病”

    最近云界发生了2件事,一件是大事,一件是小事,大事是阿里云与微软合作推出了开放应用模型 Open Application Model(OAM),小事是由于微软 SQL Server 在阿里云上水土不服 ...

  9. 阿里云RDS for SQL Serrver关于权限的一个严重Bug

    阿里云RDS for SQL Server的账号管理有不少小Bug,而且有一个很严重的Bug:任何普通账号,都能创建数据库.注意,我这里是说任意普通账号,任意任意普通账号!任意任意普通账号!重要的事情 ...

随机推荐

  1. C#定时执行

    代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

  2. python调用py中rar的路径问题。

    1.python调用py,在py中的os.getcwd()获取的不是py的路径,可以通过os.path.split(os.path.realpath(__file__))[0]来获取py的路径. 2. ...

  3. 分金币 bzoj 3293

    分金币(1s 128M)  coin [问题描述] 圆桌上坐着n个人,每人有一定数量的金币,金币总数能被n整除.每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数目相等.你的任务是求出被转手的 ...

  4. Java常用的几种集合, Map集合,Set集合,List集合

    Java中  Object是所有类的根 Java集合常用的集合List集合.Set集合.Map集合 Map接口常用的一些方法 size() 获取集合中名值对的数量 put(key k, value v ...

  5. HttpClient调用webApi时注意的小问题

    HttpClient client = new HttpClient(); client.BaseAddress = new Uri(thisUrl); client.GetAsync("a ...

  6. Win7系统卸载McAfee杀毒软件

    方法一.用系统正常卸载程序卸载. 首先,在服务里将McAfee相关的所有服务“禁用”. 然后, Windows“控制面板”中的“添加/删除程序”卸载 McAfee Consumer 产品. 接着,到C ...

  7. MvcPager使用的Demo(同步分页)

    最近接触了一下MvcPager,昂...来做个笔记吧 其实,我喜欢前后端分离,分页这种东西前端负责的地方,后端不用顾问,这里的MvcPager有点让我想起服务器控件,毕竟用到了HtmlHelper. ...

  8. JavaScript学习笔记4之 ByClass&json

    一.通过class获取标签 var out=document.getElementsByClassName(‘out’);IE 6 7 8 不支持 getElementsName 是否有办法既能通过c ...

  9. 将SHP导入MySQL中

    ogr2ogr -f MySQL MySQL:smfs,host=127.0.0.1,user=root,password=gis D:\spatialData\HB\HuBeiPicture\HuB ...

  10. Android 通过httppost上传文本文件到服务器。

    /** * 往服务器上上传文本 比如log日志 * @param urlstr 请求的url * @param uploadFile log日志的路径 * /mnt/shell/emulated/0/ ...