Cómo añadir swap a tu máquina virtual Linux en Azure
Ajeno a cuánta memoria física tenga tu máquina virtual Linux en Azure, siempre es bueno tener memoria swap para los casos en que algún proceso ocupe (ojala temporalmente) más memoria de lo normal y el kernel no tenga que matarlo.
Por ejemplo, hace poco en una VM Linux donde tengo un servidor de base de datos PostgreSQL ví lo siguiente en el comando dmesg:
[1715082.920252] postgres invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0 [1715082.920256] postgres cpuset=/ mems_allowed=0 [1715082.920258] Pid: 37648, comm: postgres Not tainted 3.2.0-126-virtual #169-Ubuntu [1715082.920259] Call Trace: [1715082.920266] [] dump_header+0x91/0xe0 [1715082.920269] [] oom_kill_process+0x85/0xb0 [1715082.920271] [] out_of_memory+0xfa/0x220 ...
oom-killer es el “asesino” de procesos cuando se acaba la memoria (Out-Of-Memory killer). Si te aparecen en dmesg, significa que te está faltando RAM.
Por suerte, activar el swap es muy fácil. Edita como root el archivo /etc/waagent.conf, y busca las líneas donde aparezca ResourceDisk:
# Format if unformatted. If 'n', resource disk will not be mounted. ResourceDisk.Format=y # File system on the resource disk # Typically ext3 or ext4. FreeBSD images should use 'ufs2' here. ResourceDisk.Filesystem=ext4 # Mount point for the resource disk ResourceDisk.MountPoint=/mnt/resource # Create and use swapfile on resource disk. ResourceDisk.EnableSwap=y # Size of the swapfile. ResourceDisk.SwapSizeMB=4096
La clave es el EnableSwap, los otros valores están para indicar lo que estoy usando.
Luego ejecuta este comando para que se refresque la configuración:
service walinuxagent restart
Espera un par de minutos y comprueba la memoria adicional con el comando free, en la línea Swap debiera aparecer valores distintos a cero:
root@tsmaster2:/etc# free total used free shared buffers cached Mem: 3527032 3295480 231552 0 38640 2916964 -/+ buffers/cache: 339876 3187156 Swap: 4194300 1076 4193224