我有 768 MB RAM。一般情况下,MySQL 使用 100-180 MB 的 RAM,MySQL 则交换 80-120 MB。我有 50-60 MB 的可用 RAM。
所以我想我应该升级。然后我将 RAM 升级到 1 GB。之后,我就有了 200-350 MB 的可用 RAM。但 MySQL 使用相同数量的 RAM,但仍然交换 40-60 MB。
这就是我的free -m
结果。
total used free shared buffers cached
Mem: 996 796 200 0 73 97
-/+ buffers/cache: 625 371
Swap: 2047 92 1955
这是我的最高结果
top - 22:11:23 up 13:35, 1 user, load average: 0.26, 0.33, 0.35
Tasks: 143 total, 1 running, 142 sleeping, 0 stopped, 0 zombie
Cpu(s): 20.2%us, 1.8%sy, 0.0%ni, 77.8%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1020564k total, 809836k used, 210728k free, 77808k buffers
Swap: 2097144k total, 94880k used, 2002264k free, 102596k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
2484 mysql 20 0 1845m 165m 4356 S 25.9 16.6 151:33.45 63m mysqld
13777 myuser 20 0 201m 22m 9836 S 0.0 2.3 0:00.42 0 php-cgi
13780 myuser 20 0 200m 21m 9820 S 3.3 2.2 0:00.47 0 php-cgi
13773 myuser 20 0 200m 21m 9820 S 0.0 2.2 0:00.70 0 php-cgi
13775 myuser 20 0 200m 21m 9812 S 5.3 2.2 0:00.42 0 php-cgi
13779 myuser 20 0 200m 21m 9812 S 3.0 2.2 0:00.31 0 php-cgi
13778 myuser 20 0 200m 21m 9812 S 3.6 2.2 0:00.31 0 php-cgi
13776 myuser 20 0 200m 21m 9812 S 3.0 2.2 0:00.31 0 php-cgi
13774 myuser 20 0 199m 20m 9812 S 0.0 2.1 0:00.23 0 php-cgi
2619 named 20 0 233m 9.8m 1388 S 0.0 1.0 0:04.57 5288 named
2689 root 20 0 328m 7528 6316 S 0.0 0.7 0:05.14 9648 httpd
13735 root 20 0 106m 4840 3756 S 0.0 0.5 0:00.26 0 sshd
12772 apache 20 0 328m 3932 2040 S 0.0 0.4 0:01.08 9392 httpd
13163 apache 20 0 328m 3916 2036 S 0.0 0.4 0:00.65 9400 httpd
13425 apache 20 0 328m 3912 2036 S 0.0 0.4 0:00.32 9404 httpd
13417 apache 20 0 328m 3908 2036 S 0.0 0.4 0:00.35 9412 httpd
13420 apache 20 0 328m 3908 2036 S 0.0 0.4 0:00.37 9412 httpd
尽管我有 371 MB 可用 RAM,但我的 CentOS 6.3 系统仍然会交换。现在交换大小为 90 MB。
我的问题是,虽然我有很多可用 RAM,但为什么 Linux 仍然会交换?如果情况很糟糕,我该如何诊断更多?或者我不应该关心它?
答案1
您的 mysqld 配置为使用 1,8 GB RAM - 可能是由于您在/etc/my.cnf
.这比实际可用的要多得多。
现在,在某个时间点(您可能会安装sysstat
并询问sar
这一点),您似乎会收到使用比可用内存更多的 RAM 的内存请求(也可能是 PHP) - 因此系统开始交换。
到最后,内存不再使用,但也无法访问它。因此系统没有理由将该交换空间放回 RAM。
您可以调整 Linux 的“swappiness”来改变这种行为。
“Ask Ubuntu”上有一个很好的问题/答案这里。
答案2
我看到你跑apache
了1G ram
,我vps
去年也遇到过你的问题。apache
需要大约 300-400 K 内存,这对我来说非常糟糕VPS
,我删除apache
并安装了lighthttpd
。你做吧。