VPS(ubuntu)的内存使用问题:MySQL进程死机

时间:2015-02-22 18:32:18

标签: mysql linux memory-leaks swap digital-ocean

我正在使用规格:

运行VPS
Ubuntu 12.04.5 LTS (GNU/Linux 3.13.0-32-generic x86_64)
512mb RAM
1 CPU 
20gb SSD

如果您想知道它是DigitalOcean液滴。它正在运行TS3,LAMP(带有wordpress),OpenVPN,BYOBU和OwnCloud。

现在我的问题是mySQL在30米到1小时后死于我。通常在重新启动后,内存使用率为54%且mySQL没有问题,但随着内存使用率达到80-89%,我开始遇到问题。

System load:  0.01               Users logged in:      0
Usage of /:   22.1% of 19.56GB   IP address for eth0:  *****
Memory usage: 90%                IP address for as0t0: *****
Swap usage:   0%                 IP address for as0t1: *****
Processes:    93

正如您所看到的,内存使用率非常高,我注意到随着内存使用量的增加,mySQL进程会死亡的趋势。但是交换使用率是0%。

有没有办法让mySQL和其他进程使用swap?

让我的内存使用率如此之高后,让mySQL使用交换停止让它死掉吗?

高内存使用后,进程终止,我收到此错误:

 [2002] SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)

在大多数情况下,处理器负载永远不会超过25%。服务器还运行一个快速的SSD,因此使用交换不会有问题,而且我没有那么多的流量。

1 个答案:

答案 0 :(得分:2)

通过制作大小为256mb的交换文件来修复它。在没有可用内存后,mySQL现在不会停止。

遵循Etel Sverdlov的本教程:

https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-12-04

我能够制作交换文件。为了删除它,我将复制教程。

如何在Ubuntu 12.04上添加交换

关于Linux交换 Linux RAM由称为页面的内存块组成。为了释放RAM页面,可以发生“linux swap”,并将一页内存从RAM复制到硬盘上的预配置空间。 Linux交换允许系统利用比最初实际可用的内存更多的内存。

然而,交换确实有缺点。由于硬盘的内存比RAM慢得多,因此虚拟专用服务器性能可能会大幅降低。此外,如果系统被交换进来的太多文件淹没,交换抖动就会开始发生。

检查交换空间 在我们继续设置交换文件之前,我们需要通过查看交换使用情况摘要来检查VPS上是否已启用任何交换文件。

sudo swapon -s

空列表将确认您没有启用交换文件:

Filename                Type        Size    Used    Priority

检查文件系统 在我们知道虚拟服务器上没有启用交换文件后,我们可以使用df命令检查服务器上有多少空间。交换文件需要256MB-因为我们只使用了大约8%的/ dev / sda,我们可以继续。

df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda        20907056 1437188  18421292   8% /
udev              121588       4    121584   1% /dev
tmpfs              49752     208     49544   1% /run
none                5120       0      5120   0% /run/lock
none              124372       0    124372   0% /run/shm

创建并启用交换文件 现在是时候使用dd命令创建交换文件了:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

“of = / swapfile”指定文件的名称。在这种情况下,名称是swapfile。

随后我们将通过创建一个linux交换区域来准备交换文件:

sudo mkswap /swapfile

结果显示:

Setting up swapspace version 1, size = 262140 KiB
no label, UUID=103c4545-5fc5-47f3-a8b3-dfbdb64fd7eb

通过激活交换文件来完成:

sudo swapon /swapfile

然后,当您查看交换摘要时,您将能够看到新的交换文件。

swapon -s
Filename                Type        Size    Used    Priority
/swapfile                               file        262140  0   -1

此文件将在虚拟专用服务器上持续,直到计算机重新启动。您可以通过将交换添加到fstab文件来确保交换是永久性的。

打开文件:

sudo nano /etc/fstab

粘贴在以下行:

 /swapfile       none    swap    sw      0       0 

文件中的Swappiness应设置为10.跳过此步骤可能会导致性能不佳,而将其设置为10将导致交换充当紧急缓冲区,从而防止内存不足崩溃。

您可以使用以下命令执行此操作:

echo 10 | sudo tee /proc/sys/vm/swappiness
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

要防止文件具有全局可读性,您应该在交换文件上设置正确的权限:

sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

所有信用:Etel Sverdlov:https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-12-04