mysql 交换文件在 freebsd 上崩溃

mysql 交换文件在 freebsd 上崩溃

我有一个低内存 VPS,mysql 和交换文件每天早上 03:00 准时崩溃。系统上没有配置任何 cronjobs。该服务器是一个基本的 LAMP 开发服务器,所有设置都是默认设置。

 cat /var/log/messages|grep -i mysql
Jun 25 20:51:07 vader sshd[72946]: error: PAM: authentication error for mysql from 65.52.155.140
Jun 28 03:01:34 vader kernel: pid 848 (mysqld), uid 88, was killed: out of swap space
Jun 28 03:01:34 vader kernel: pid 93947 (mysqld), uid 88, was killed: out of swap space
Jun 29 03:01:32 vader kernel: pid 98578 (mysqld), uid 88, was killed: out of swap space
Jun 29 03:01:33 vader kernel: pid 2586 (mysqld), uid 88, was killed: out of swap space

我的交换文件是 1GB。我试过 2GB,一周后又出现了同样的崩溃情况。

 ls -l /home/sw*
-rw-------  1 root  wheel  1073741824 Jun 21 13:19 /home/swap0

更糟糕的是,如果不重启,我无法重新初始化交换文件

swapoff -a mdconfig -a -t vnode -f /home/swap0 -u 0 && swapon /dev/md0 mdconfig: ioctl(/dev/mdctl): 设备繁忙

我没有太多的内存可以使用:

# vmstat
 procs      memory      page                    disks     faults         cpu
 r b w     avm    fre   flt  re  pi  po    fr  sr vt0 md0   in   sy   cs us sy id
 1 0 3   1709M   491M    44   0   0   0    54  29   0   0    4  135   94  0  0 100

但是如果 mysql 运行正常的话我就不需要它了。

两个问题。

没有。1)如何在交换文件崩溃后重新初始化它,这样我就不必重新启动(我只是想知道,因为我在谷歌上找到的一切都失败了)?

没有。2)如何稳定mysql以便它不会在0300时因大量内存而中断?

答案1

我也刚刚看到了这种行为,只不过在我的例子中,mysql 服务器每周死机一次,而不是每天死机一次。它发生在每周定期任务运行的同时(请参阅 /etc/crontab 和 /etc/cron.d/periodic/{daily,weekly}/)。从您的日志来看,它发生在 03:01,即每日定期任务运行期间(从 03:00 开始)。有几种可能的解决方案:

  • 避免运行定期任务,或者至少确定哪个任务正在消耗内存。在我的情况下,它是makewhatis每周运行的命令
  • 添加更多交换空间。超过某个点后,服务器应该有足够的内存来与定期任务共存
  • 添加另一个定期任务,在其他任务之后运行并重新启动服务器

相关内容