linux – 为什么在剩余大量可用内存时使用Swap?

我有非常好的web(专用)服务器,具有良好的内存资源:
System information
Server load     2.19 (8 CPUs)   
Memory Used     29.53% (4,804,144 of 16,267,652)    
Swap Used   10.52% (220,612 of 2,097,136)

如您所见,当有足够的可用内存时,我的服务器正在使用swap.

这是正常的还是配置或编码有问题?

注:
由于某种原因,我的MySQL进程使用了​​超过160%的CPU功率;我不知道为什么,但我没有超过70个同时用户…

解决方法

这是完全正常的.

在系统启动时,会启动许多服务.这些服务初始化自己,读入配置文件,创建数据结构等.他们使用一些记忆.由于您没有使用它们,因此许多这些服务在系统启动的整个过程中都不会再次运行.其中一些可能会在数小时,数天或数周内运行.然而,所有这些数据都在物理内存中.

当然,系统不能抛弃这些数据.它无法证明它永远不会被访问.例如,其中一项服务可能是为您提供远程访问框的服务.您可能在一周内没有使用它,但如果您使用它,它可以更好地工作.

但是系统知道它可能喜欢将这种物理内存用于磁盘缓存之类的东西,或者以其他方式来提高性能.所以它做机会主义交换.如果没有更好的办法,它会使用交换空间将很长时间未使用过的数据写入磁盘.但是,它仍然将页面保留在物理内存中.因此,仍然可以访问它们而无需交换它们.

现在,如果系统稍后需要该物理内存用于其他内容,它可以简单地将这些页面丢弃,因为它已经将它们写入交换.这为系统提供了两全其美的优势.数据仍保留在内存中,因此无需从磁盘读取即可访问它.但是,如果系统需要该内存用于其他目的,则不必先将其写出来.四处大赢.

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...