欢迎来到HugNew-拥抱变化,扫一扫右边二维码关注微信订阅号:Martin说 或 加QQ群:427697041互相交流,Stay hungry, Stay foolish.

AWS使用小记—“建立数据库连接错误”

随笔 Martin 6077℃ 7评论

先说下网站搭建的环境,网站是搭在AWS云平台上,采用的是AWS+LANMP+WORDPRESS的结构,服务器EC2实例(可以理解为vps主机)用的是东京的节点,数据库是建在rds上面,具体AWS云的相关名词解释就不在这具体介绍了,有兴趣的可以去查看下AWS官方网站。

现在说下网站最近出现的问题,从1月28号开始访问网站突然出现响应很慢,并且频繁出现“建立数据库连接错误”错误页面的现象。由于采用的是wordpress,“建立数据库连接错误”的错误提示是好多朋友都曾遇到过的问题。出现这个问题的第一反应是数据库连接有问题,是不是自己的rds数据库挂了?所以首先去检查了下rds数据库实例(mysql),发现状态是available,在wp-config.php页面加入debug模式查看了下错误日志,提示是连接rds数据库失败,wp-config.php里面数据库连接的配置是正常的,而数据库又是活动的,为什么会突然出现这种现象呢?根据一般流程repair了下wp-config表,并且将数据库引擎改由innodb改为myisam,重启了下rds实例后访问网站问题依旧,于是开始怀疑是空间出现了问题,通过rds实例的监控看到28号开始数据库的Write IOPS和CPU Utilization突然很高,进一步查看下log,发现数据库服务出现过shutdown的信息。通过查询资料了解到AWS和阿里云的低配版,I/O处理能力都不容乐观,像Apache这种占用内存比较大的应用,再加上运行mysql,内存达到临界点mysqld被kill掉是有可能的。于是为了增加I/O将Storage Type改为了SSD并且Storage由5G升级到20G,心想这下问题终于解决了,重启了RDS instance后访问访问发现问题依然存在…当时有种崩溃的感觉…

回顾了下自己搭建这个网站的整个流程后突然意识到自己忽略了一个问题-EC2 instance的I/O。按照自己的猜想于是查看了下EC2 instance的监控,果然,从28号开始EC2的I/O突然超过了临界值。查看了下网站的原始配置想到了升级方案,将AWS节点由东京改为新加坡(测试新加坡的节点响应要比东京好很多),EC2方面由原来的EC2 instance AMI由CentOS6 PV改成CentOS HVM(虽然以前理论上半虚拟化(PV)的性能在存储和网络操作方面的性能要优于硬件虚拟机(HVM),但是现在借助硬件虚拟机驱动程序上的半虚拟化,硬件虚拟机可以获得与半虚拟化来宾相同甚至更佳的性能),为了更好的I/O处理能力,在EC2 instance上配置了30G SSD的EBS,升级完配置后将数据库数据还原到新的RDS instance上,访问了下网站,响应正常。

虽然AWS现在流传的很神奇,但是自己实际使用过程中效果却没有预想到的那么好,尤其是I/O能力确实很一般。期待AWS能做出更高性价比的产品,让用户更少在上面折腾。

转载请注明:HugNew » AWS使用小记—“建立数据库连接错误”

喜欢 (4)or分享 (0)
发表我的评论
取消评论

表情
(7)个小伙伴在吐槽
  1. 之前上不去的最终原因是什么呢? 又怎么解决的? 就是改变了ec2 insyance的类型,增加了storage? 网站还有一个问题是手机登录没找到注册和登录的页面
    Jim2015-02-01 14:10 回复
    • 最终原因是服务器内存不够以及I/O性能问题,不是简单的改了下类型,是用centos6 hvm的ami重新建了下网站,centos6 hvm内存是1g原来的cent6 pv内存是0.66g。
      Martin2015-02-01 15:37 回复
    • 移动端注册登录页面我放在页面最底下了 ❓ 没找到合适的地方
      Martin2015-02-01 15:39 回复
      • 看到了,哈哈,和百度统计在一行
        jim2015-02-01 20:22 回复
    • 对了,jim哥你那代理中转命令发给我了么?没找到...
      Martin2015-02-01 15:45 回复
      • 那个端口转发的命令: socat -d -d -lfaa.txt -v tcp-l:2222,reuseaddr,fork tcp-l:2223,reuseaddr 如果没有socat,就apt-get一个
        jim2015-02-01 21:23 回复
        • ok,我test一下
          Martin2015-02-01 21:28 回复