阿里云 MySQL 频繁挂掉的解决方法
2018年6月12日
阿里云如果使用低配的服务器,随着访问量增大,上面的 MySQL 经常被系统停掉。除了升级内存硬盘等系统资源外,还可以使用如下方法尝试解决下:
1、降低数据库 InnoDB 引擎的缓冲区大小
找到 MySQL 的配置文件,一般在 /etc/mysql/my.cnf 或者 /etc/my.cnf 这种位置。编辑配置文件,修改或添加下列行:
1 | innodb_buffer_pool_size = 64M |
2、添加 SWAP 分区
阿里云服务器默认不带 SWAP 分区,我们可以自己创建。请在 Shell 中依次执行以下命令:
1 2 3 | dd if=/dev/zero of=/swapfile bs=1M count=1024 mkswap /swapfile swapon /swapfile |
说明:创建一个有 1024 个块的区,每块 1M,总的来说就是创建一个 1024M 的区;接下来将该区设为 swap 分区;再接着启用 swap 分区。
3、SWAP 分区自启动
添加下面这行到 /etc/fstab,让刚才创建的 SWAP 分区随系统重启:
1 | /swapfile swap swap defauluts 0 0 |
4、重启 MySQL
使用如下命令重启 MySQL:
1 | service mysql restart |
采用以上操作后可以观察下是否还有频繁挂掉的现象。如果仍然存在可以尝试以下更多操作限制 MySQL 连接数。
更多操作
除了上述这些,我们还可以进一步限制 MySQL 的连接数。还是修改 MySQL 配置文件,添加或者修改下面这一行:
1 | max_connections = 100 |
如果这些操作都做了还是不行,请考虑升级你的机器内存、CPU等配置或者购买阿里云的数据库服务:)
参考文献
[1] https://my.oschina.net/cenchy/blog/740259
[2] https://oldtang.com/138.html