引用原文 http://www.ipeld.net/archives/8420.html

(分享) 阿里云服务器上 MySQL 频繁挂掉的解决方法

前几天翼帆远航搬家到阿里云服务器,原本一切都很正常,但从昨天开始就经常出现“打开页面提示无法连接到数据库”的问题。按正常思路走,数据库无法连接,那肯定是 MySQL 服务出了问题,重启 MySQL,网站暂时恢复正常,但过了一会儿又挂了。

百度搜索后发现网上有很多人跟我遇到了同样的问题,问题产生的原因大概是:内存不足,MySQL 进程被杀掉。感谢 hongjiang 提供了解决方法,网站运行到现在一直都很正常。

database

解决方法

1、降低数据库 InnoDB 引擎的缓冲区大小。

在 /etc/my.cnf 的 mysqld 下添加下面一句:

说明:WordPress 默认使用 InnoDB 数据库引擎;innodb_buffer_pool_size 设置的是缓冲区的大小,默认值为 128M,鉴于个人博客访问量不会太大,因此适当降低缓冲区的大小以减轻内存压力。

2、添加 swap 分区。

a. 在 Shell 中逐条执行下列语句:

说明:创建一个有 1024 个块的区,每块 1M,总的来说就是创建一个 1024M 的区;接下来将该区设为 swap 分区;再接着启用 swap 分区。

b. 将下面一行添加到 /etc/fstab :

 说明:服务器启动时自动挂载刚刚创建的 swap 分区。

3、最后重启 MySQL 使操作生效。

结语

以上解决方法来自 http://hongjiang.info/aliyun-vps-mysql-aborting/,相关说明则是个人理解,不代表完全正确,欢迎交流!

 

2014-12-06 补充

1、如果不需要 MySQL 的 InnoDB 引擎可以将其关闭。

如果需要用到 InnoDB 可以按照上文介绍的办法将 innodb_buffer_pool_size 从默认的 128M 减小到 64M 以减少内存占用。

2、为了节约内存,nginx 也做相关配置:一个 CPU 进程,256 个线程即可。

3、减少 php-fpm 的资源占用,可根据自身情况进行修改。

补充内容转载自:http://www.zzsck.org/program/mysql/5477.html