阿里云 轻量VPS MySQL 自动停止的解决办法

判断可能是内存不够,杀死了 mysqld 进程。

创建 SWAP 分区

运行下面的命令:

dd if=/dev/zero of=/swapfile bs=1M count=1024
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

将下面一行添加到 /etc/fstab ,服务器重启时自动启动 swap 。

/swapfile swap swap defaults 0 0

优化数据库

降低数据库 InnoDB 引擎的缓冲区大小,以及限制 MySQL 的最大连接数(max_connections):

/etc/my.conf.d/server.cnfmysqld 下添加下面两句:

# 降低 InnoDB 缓冲区大小为 64M 或者 32M
innodb_buffer_pool_size = 64M

# 限制最大连接数为100,在服务器配置很低时可以继续降低
max_connections = 100

修改完重启 MySQL:systemctl restart mysqld

max_connections 的默认值是 151,可以动态更改这个值。参见:max_connections

优化 nginx

参见:Optimizing Nginx Configuration

打开 /etc/nginx/nginx.conf ,优化配置如下:

worker_processes 1;
worker_connections 256;

修改完重启 nginx:systemctl restart nginx

参考资料:

  1. https://linuxize.com/post/create-a-linux-swap-file/