VPS (ubuntu) 的内存使用问题:MySQL 进程终止
Memory usage issues with VPS (ubuntu): MySQL process dies
我是 运行 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 和其他进程使用交换?
让 mySQL 使用 swap 会不会在我的内存使用率变得如此高后停止让它死掉?
高内存使用后,进程终止,我得到这个错误:
[2002] SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
在大多数情况下,处理器负载不会超过 25%。服务器还运行一个快速的 SSD,所以使用交换不会有问题,而且我没有那么大的流量。
通过创建大小为 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 交换”,并将内存页面从 RAM 复制到硬盘上预先配置的 space。 Linux 交换允许系统利用比最初实际可用的内存更多的内存。
然而,交换也有缺点。由于硬盘的内存比 RAM 慢得多,因此虚拟专用服务器的性能可能会大大降低。此外,如果系统因换入和换出太多文件而变得不堪重负,可能会开始发生交换抖动。
检查交换 Space
在我们继续设置交换文件之前,我们需要通过查看交换使用摘要来检查 VPS 上是否启用了任何交换文件。
sudo swapon -s
空列表将确认您没有启用交换文件:
Filename Type Size Used Priority
检查文件系统
在我们知道我们没有在虚拟服务器上启用交换文件之后,我们可以使用 df 命令检查服务器上有多少 space。交换文件将占用 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”指定文件名。在这种情况下,名称是交换文件。
随后我们将通过创建一个 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
我是 运行 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 和其他进程使用交换?
让 mySQL 使用 swap 会不会在我的内存使用率变得如此高后停止让它死掉?
高内存使用后,进程终止,我得到这个错误:
[2002] SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
在大多数情况下,处理器负载不会超过 25%。服务器还运行一个快速的 SSD,所以使用交换不会有问题,而且我没有那么大的流量。
通过创建大小为 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 交换”,并将内存页面从 RAM 复制到硬盘上预先配置的 space。 Linux 交换允许系统利用比最初实际可用的内存更多的内存。
然而,交换也有缺点。由于硬盘的内存比 RAM 慢得多,因此虚拟专用服务器的性能可能会大大降低。此外,如果系统因换入和换出太多文件而变得不堪重负,可能会开始发生交换抖动。
检查交换 Space 在我们继续设置交换文件之前,我们需要通过查看交换使用摘要来检查 VPS 上是否启用了任何交换文件。
sudo swapon -s
空列表将确认您没有启用交换文件:
Filename Type Size Used Priority
检查文件系统 在我们知道我们没有在虚拟服务器上启用交换文件之后,我们可以使用 df 命令检查服务器上有多少 space。交换文件将占用 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”指定文件名。在这种情况下,名称是交换文件。
随后我们将通过创建一个 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