root@ubuntu:~# cd /var/
root@ubuntu:/var# dd if=/dev/zero of=swapfile bs=1024 count=2096176
2096176+0 records in
2096176+0 records out
2146484224 bytes (2.1 GB, 2.0 GiB) copied, 7.05169 s, 304 MB/s
root@ubuntu:/var# mkswap swapfile
mkswap: swapfile: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 2 GiB (2146480128 bytes)
no label, UUID=f22fba5b-b886-49eb-beb7-d306b43fa8e3
root@ubuntu:/var# swapon swapfile
swapon: /var/swapfile: insecure permissions 0644, 0600 suggested.
root@ubuntu:/var# vim /etc/fstab
root@ubuntu:/var# top
top - 23:13:14 up 3:00, 4 users, load average: 0.23, 1.90, 1.91
Tasks: 130 total, 2 running, 84 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.3 us, 0.7 sy, 0.0 ni, 96.3 id, 0.0 wa, 0.0 hi, 0.7 si, 0.0 st
KiB Mem : 2017296 total, 80040 free, 449284 used, 1487972 buff/cache
KiB Swap: 2096172 total, 2096160 free, 12 used. 1379648 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20472 acunetix 20 0 316632 84928 7640 S 4.7 4.2 7:34.55 opsrv
638 syslog 20 0 263036 4396 2836 S 0.3 0.2 0:02.39 rsyslogd
20465 acunetix 20 0 210444 9084 8212 S 0.3 0.5 0:00.14 postgres
28255 acunetix 20 0 212848 15200 12440 R 0.3 0.8 0:01.42 postgres
一般在各个云产商购买的云服务器都是不会给我们添加虚拟内存。
例如通过阿里云安装的系统,不会自动给我们分配swap虚拟内存空间;Swap分区或虚拟内存文件,是在系统物理内存不够用的时候,由系统内存管理程序将那些很长时间没有操作内存数据,临时保存到Swap分区虚拟内存文件中,以提高可用内存额度的一种机制。当那些程序要再次重新运行时,会再从Swap分区或虚拟内存文件中恢复之前保存的数据到内存中。
在升级服务器配置前,就先给系统加上一块1GB大小的虚拟内存,防止Linux大开杀戒。
cd /var/
dd if=/dev/zero of=swapfile bs=1024 count=1048576 #创建大小为1G的文件swapfile
#count的计算公式: count=SIZE*1024 (size以MB为单位)
mkswap swapfile #格式化虚拟内存文件
swapon swapfile #激活虚拟内存文件
再编辑自动挂载文件,让系统开机的时候自动加载虚拟内存文件
vi /etc/fstab
添加如下代码
/var/swapfile swap swap defaults 0 0
PS:相关操作会导致额外的IO开销,特别是,如果内存使用率已经非常高,而同时IO性能也不是很好的情况下,该机制其实会起到相反的效果:不仅系统性能提升较小(因为内存使用率已经非常高了),而且由于频繁的内存到SWAP的切换操作,会导致产生大量额外的IO操作,导致IO性能进一步降低,最终反而降低了系统总体性能。