我正在运行带有 cpanel 的 centos 5.8。最近我收到报告说我的交换已满,但有大量可用内存可供使用。
top - 10:33:43 up 133 days, 17:00, 1 user, load average: 0.05, 0.03, 0.05
Tasks: 170 total, 1 running, 169 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.1%us, 0.5%sy, 0.0%ni, 97.2%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 24726100k total, 8255368k used, 16470732k free, 599560k buffers
Swap: 1046520k total, 984740k used, 61780k free, 3641828k cached
我该如何解决这个问题?
应该使用未使用的 RAM 内存而不是交换空间。或者我应该增加交换空间(我该怎么做?)。
谢谢
答案1
这相当奇怪......虽然内核会积极地换出未使用的页面以允许更多的磁盘缓存,但它通常不会这样做,直到大多数内存实际被用作缓存。
我能想到两种可能性:
- 您提供的输出
top
是在大量使用内存的进程刚刚终止时获取的,留下了大量未使用的 RAM。长时间内不错的 sar 输出(内存和交换使用情况)可以证实或反驳这一点。 - 你已经转动了
swappiness
旋钮哇哇哇搞砸了,所以内核会愉快地按照你的指示交换它能接触到的所有内容。仔细检查/proc/sys/vm/swappiness
(默认值为 60),如果高于该值,则将其调回(如果你真的想,也可以将其设置得更低,但如果你的机器最终因为没有任何磁盘缓存而表现得很糟糕,请不要怪我)。
另外,我不用担心机器会有大量页面被换出——只需给机器更多交换空间,让它自己做事即可。几乎可以肯定的是,内核内存管理器在优化内存使用方面比您更聪明。
答案2
您确定有问题需要解决吗?您是否遇到过性能低下的情况?例如,检查“优化内存使用”AThttps://help.ubuntu.com/community/SwapFaq#Why_do_I_need_swap.3F 大量使用的交换空间并不意味着确实存在问题。
答案3
我不确定您的高交换使用率是否表明存在问题。查看 dstat 或 vmstat 并观察交换区域是否有任何活动。我在我的一位客户的服务器上看到过类似的情况。交换几乎已满,但未以任何方式使用(未看到交换的 I/O)。就我而言,这根本不是问题!
和
swapoff
其次是
swapon
如果你有足够的可用 RAM,将会清空你的交换空间。