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