不断回收的Linux和Swap空间中的交换大小不断增加?

前端之家收集整理的这篇文章主要介绍了不断回收的Linux和Swap空间中的交换大小不断增加?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个8GB的RAM linux盒子,运行4个tomcat服务器.其中一个设置为3000MB内存(jvm -Xms和-Xmx设置),其他设置为1500MB.交换分区也设置为8Gigs.当我启动这些服务器时,交换文件的使用率很低.但是在一段时间内以及在某个/所有服务器处于峰值活动的某些时间内,交换使用率开始增加.这是典型的sar -r输出.

kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad

48260 8125832 99.41 196440 2761852 7197688 1190912 14.20 316044

75504 8098588 99.08 198032 2399460 7197688 1190912 14.20 316032

显示当前使用的14.2%掉期.有趣的是这个%永远不会减少.它继续增加,达到30-40%.我们每周重启服务器.

我认为%swpused在峰值活动期间增加,在低活动期间减少.或者至少保持不变.这看起来像操作系统从未回收交换空间.

免费输出
免费-m
缓存的总使用的免费共享缓冲区
记忆:7982 7937 45 0 32 2088
– / buffers / cache:5816 2166
交换:8191 1163 7028

所以至少有2克免费拉姆.所以问题是为什么交换空间继续增加而不被操作系统收回?或者如何调试这个以弄清楚什么是hapenning ..

解决方法

如果信息被换出到光盘然后再读回内存,它通常会在交换区域中分配,直到交换空间不足为止.
这意味着如果相同的信息需要稍后再次换出并且没有改变,操作系统可以从已分配的RAM中删除页面,而无需向磁盘节省时间.

分配给已经读回内存的东西的交换也将被释放

>当根本不再需要相关页面时(即由应用程序释放)
>更改相关页面时(因此光盘上的副本不再是最新的)
>机器在交换空间上运行不足,因此清除RAM中已有的东西以腾出空间

在/ proc / meminfo中查找名为“SwapCached”的行.此条目计算在RAM和交换分区中找到的页面.例如,随机选择一个小VM,我的一个VM的/ proc / meminfo虚拟文件显示

SwapTotal:        698816 kB
SwapFree:         624520 kB
SwapCached:        17232 kB

表示分配了74268K的交换空间,但是这些页面的17232K当前也被映射到RAM中(如果其他东西需要空间,可以立即从交换中解除分配).

毫无疑问,坐在那里的页面很久以前就被换掉了,从那时起就再也没有用过了.内核不会因为有一些空闲的RAM来重新加载来自swap的页面,因为空闲的RAM可能更好地用于缓存或缓冲区 – 写入交换的页面通常只在下次需要时重新读取.

如果你想清除swap中的内容,只要你有足够的空闲和/或可用空间(即免费缓存缓冲区(减去cb计数中那些不可用的权利RightThisInstant)),只需将其关闭然后再打开再次使用swapoff -a&&交换-a.

当然,你也可能在某处发生内存泄漏,但这并不是你所看到的行为的唯一解释.

猜你在找的Linux相关文章