正如您在运行如下所示的 vmstat 时所看到的那样。
bash-3.00# vmstat 1 5
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr m1 m1 m1 m2 in sy cs us sy id
2 0 0 12812792 7094520 668 1023 213 939 939 0 0 1 1 1 0 30519 66084 35693 12 7 81
10 19 0 5469784 797392 265 325 583 1119 1119 0 0 1 1 0 0 35404 75227 44916 14 8 78
34 10 0 5577672 846056 570 554 3802 1233 1233 0 0 1 0 0 0 35013 72253 46505 10 10 79
19 0 0 5576352 843112 462 2825 1200 963 963 0 0 0 0 0 0 35070 73182 44379 13 8 78
2 0 0 5582624 854664 1698 1885 134 1198 1198 0 0 2 1 1 0 35688 71013 43705 11 7 82
这是什么问题?因为内存使用量约为 %95。
***---****---****----*****
由于该系统是 HA 系统,因此这里是备用机器的输出。
bash-3.00# vmstat 1 5
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr m1 m1 m1 m2 in sy cs us sy id
1 0 0 13949104 8516736 553 1047 121 21 20 0 0 1 1 1 9 30691 69172 34352 12 7 81
0 0 0 12456136 7171232 1122 2554 4117 0 0 0 0 3 1 2 0 31505 85240 35958 11 8 81
0 0 0 12353888 7147488 1401 664 0 0 0 0 0 0 0 0 0 31647 73507 35881 13 6 81
0 0 0 12345536 7129280 13 40 0 0 0 0 0 0 0 0 0 30787 69357 34695 14 6 80
0 0 0 12345440 7125040 217 1646 0 24 24 0 0 0 0 0 0 31390 73710 38393 12 10 78
答案1
Solaris?哪个版本(可能是空闲列中的 8 或 9)?Sun cluster 还是 vcs?
无论如何,忽略第一行,因为那是启动以来的平均值。
顺便问一下,备份是否在被动节点上运行,并导致表面上什么都不做的机器上出现小故障和页面调入?并查看上下文切换。
在活动节点上,90% 的内存使用率可能只是您正在运行的程序使用的内存:可能是 Oracle 的 SGA;其余部分用于缓存。这是正常的。系统似乎确实受到 io 限制,至少在您显示的几秒钟内是这样。有页面调入和调出,但没有严重的内存压力,因此这可能反映了内存映射 io。一些交换空间正在使用中,但这可能反映了预分配而不是任何短缺。
运行:vmstat -s
; vmstat -p 10 5
。如果是 Solaris,则还需要:prstat -a
; prstat -t
; prstat -a -s rss
; 在 Solaris 9 上echo ::memstat | mdb -k
(这可能需要一段时间,所以不要惊慌)。这些将显示系统正在使用内存做什么,以及哪些应用程序正在使用它。如果您认为您的应用程序软件正在泄漏内存,那么请比较 prstat 随时间变化的测量值。
如果您一直受到 I/O 限制,那么请尽快iostat -xn 60
联系存储管理员。但这是另一回事。
答案2
我不确定这里问的是什么,但您记得 vmstat 输出的第一行显示自上次重启以来项目的平均值吗?后续行显示最后一个采样周期的值,因此通常忽略第一行。