1 不停的收到email报警,内存值超过阀值80%了。
2 top下,mysqld进程确实占据了77.5%,再加上一些其他的辅助进程,内存usage到了81%也可以理解。
[xxx@00903 5.5.25a]$ top
top - 03:48:55 up 51 days, 17:11, 2 users, load average: 0.09, 0.09, 0.11
Tasks: 202 total, 1 running, 201 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.1%sy, 0.0%ni, 98.8%id, 0.8%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 28743468k total, 28452540k used, 290928k free, 467048k buffers
Swap: 4194296k total, 0k used, 4194296k free, 4589332k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23956 mysql 20 0 24.1g 21g 5408 S 1.0 77.5 390:56.59 mysqld 9 root 20 0 0 0 0 S 0.3 0.0 203:16.51 ksoftirqd/1
23971 mmmd 20 0 687m 64m 1960 S 0.3 0.2 73:53.23 perl
1 root 20 0 21444 1232 928 S 0.0 0.0 1:29.37 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.44 kthreadd
3 看看free -m吧[xxx@00903 ~]$ free -m
total used free shared buffers cached
Mem: 28069 27828 240 0 440
-/+ buffers/cache: 22820 5249
Swap: 4095 0 4095
[xxx@00903 ~]$
4 简要分析理解free -m参数值意义total: 28069,总内存大小。
used: 27828,已经使用过的内存大小。
free:240,剩余的内存大小。
total值是used+free的值总合:
mysql> select 27828+240;
+-----------+
| 27828+240 |
+-----------+
| 28068 |
+-----------+
1 row in set (0.00 sec)
-- 总和28068与28069差了一个1,可能是-m四舍五入造成的。
mysql>
shared 不同进程间用来进行数据交换的地方,一般都是0(多个进程共享的内存总额)。
cached:4568,经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能。
我们监控的是-/+ buffers/cache:中的useed一项22820, 总内存大小是 28069,因此一计算,确实为81%
mysql>
mysql> SELECT 22828/28069;
+-------------+
| 22828/28069 |
+-------------+
| 0.8133 |
+-------------+
1 row in set (0.00 sec)
mysql>
而且-/+ buffers/cache中的后面的used+free的总合也与第一行的Mem的total值相等:
mysql> SELECT 22820+5249;
+------------+
| 22820+5249 |
+------------+
| 28069 |
+------------+
1 row in set (0.00 sec)