我有一个运行4个tomcat服务器的8GB RAM linux机器。其中之一设置为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在高峰活动期间增加,在活动减少期间减少。或者至少保持不变。看起来交换空间从未被操作系统回收。
free的输出:free -m已使用的总可用共享缓冲区已缓存Mem:7982 7937 45 0 32 2088-/ + buffers / cache:5816 2166交换:8191 1163 7028
因此,至少有2克免费Ram。因此,问题是交换空间为什么会继续增加而不被OS回收?或如何调试此方法以找出问题。