Swap ruimte toevoegen op Ubuntu 18.04

author
8 minutes, 20 seconds Read

Een vorige versie van deze handleiding is geschreven door Justin Ellingwood

Inleiding

Eén van de makkelijkste manieren om out-of-memory fouten in applicaties te voorkomen is het toevoegen van swap ruimte aan uw server. In deze gids zullen we behandelen hoe een swap bestand toe te voegen aan een Ubuntu 18.04 server.

Waarschuwing: Hoewel swap over het algemeen wordt aanbevolen voor systemen die traditionele draaiende harde schijven gebruiken, kan het gebruik van swap met SSD’s na verloop van tijd problemen veroorzaken met hardware-degradatie. Vanwege deze overweging raden we niet aan om swap in te schakelen op DigitalOcean of elke andere provider die SSD-opslag gebruikt. Als u dit wel doet, kan dit invloed hebben op de betrouwbaarheid van de onderliggende hardware voor u en uw buren. Deze gids is bedoeld als referentie voor gebruikers die elders spinning disk systemen hebben.

Als u de prestaties van uw server op DigitalOcean wilt verbeteren, raden wij u aan uw Droplet te upgraden. Dit leidt tot betere resultaten in het algemeen en vermindert de kans dat u bijdraagt aan hardwareproblemen die uw service kunnen beïnvloeden.

Wat is Swap?

Swap is een gebied op een harde schijf dat is aangewezen als een plaats waar het besturingssysteem tijdelijk gegevens kan opslaan die het niet langer in het RAM kan bewaren. In principe geeft dit je de mogelijkheid om de hoeveelheid informatie die je server in zijn werkgeheugen kan bewaren te vergroten, met enkele beperkingen. De swap ruimte op de harde schijf zal voornamelijk worden gebruikt wanneer er niet meer voldoende ruimte in het RAM is om de in gebruik zijnde applicatie data te bewaren.

De informatie die naar schijf wordt geschreven zal beduidend langzamer zijn dan informatie die in het RAM wordt bewaard, maar het besturingssysteem zal er de voorkeur aan geven om de draaiende applicatie data in het geheugen te houden en de swap te gebruiken voor de oudere data. In het algemeen kan het hebben van swapruimte als noodoplossing voor als het RAM van het systeem op is, een goed vangnet zijn tegen uitzonderingen als het geheugen leeg is, op systemen met niet-SSD opslagruimte.

Stap 1 – Het systeem controleren op swapinformatie

Voordat we beginnen, kunnen we controleren of het systeem al wat swapruimte beschikbaar heeft. Het is mogelijk om meerdere swap bestanden of swap partities te hebben, maar over het algemeen zou één voldoende moeten zijn.

We kunnen zien of het systeem enige geconfigureerde swap heeft door te typen:

  • sudo swapon --show

Als u geen uitvoer terug krijgt, betekent dit dat uw systeem momenteel geen swap ruimte beschikbaar heeft.

U kunt controleren of er geen actieve swap is met behulp van het hulpprogramma free:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 222M 680K 678M 721MSwap: 0B 0B 0B

Zoals u kunt zien in de Swap-rij van de uitvoer, is er geen swap actief op het systeem.

Stap 2 – Beschikbare ruimte op de harde schijf partitie controleren

Voordat we ons swap-bestand maken, controleren we ons huidige schijfgebruik om er zeker van te zijn dat we genoeg ruimte hebben. Doe dit door in te voeren:

  • df -h
Output
Filesystem Size Used Avail Use% Mounted onudev 481M 0 481M 0% /devtmpfs 99M 656K 98M 1% /run/dev/vda1 25G 1.4G 23G 6% /tmpfs 493M 0 493M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 493M 0 493M 0% /sys/fs/cgroup/dev/vda15 105M 3.4M 102M 4% /boot/efitmpfs 99M 0 99M 0% /run/user/1000

Het apparaat met / in de kolom Mounted on is in dit geval onze schijf. We hebben genoeg ruimte beschikbaar in dit voorbeeld (slechts 1.4G gebruikt). Uw gebruik zal waarschijnlijk anders zijn.

Hoewel er veel meningen zijn over de juiste grootte van een swap space, hangt het echt af van uw persoonlijke voorkeuren en uw applicatie-eisen. Over het algemeen is een hoeveelheid gelijk aan of het dubbele van de hoeveelheid RAM op uw systeem een goed uitgangspunt. Een andere goede vuistregel is dat meer dan 4G swap waarschijnlijk onnodig is als u het alleen gebruikt als uitwijkmogelijkheid voor RAM.

Stap 3 – Een wisselbestand aanmaken

Nu we de beschikbare ruimte op de harde schijf weten, kunnen we een wisselbestand aanmaken op ons bestandssysteem. We zullen een bestand toewijzen met de swap grootte die we willen, genaamd swapfile in onze root (/) directory.

De beste manier om een swap bestand te maken is met het fallocate programma. Dit commando maakt direct een bestand van de opgegeven grootte.

Omdat de server in ons voorbeeld 1G RAM heeft, zullen we een 1G bestand maken in deze gids. Pas dit aan aan de behoeften van uw eigen server:

  • sudo fallocate -l 1G /swapfile

We kunnen controleren of de juiste hoeveelheid ruimte is gereserveerd door te typen:

  • ls -lh /swapfile
  • -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

Ons bestand is gemaakt met de juiste hoeveelheid gereserveerde ruimte.

Stap 4 – Het wisselbestand inschakelen

Nu we een bestand met de juiste grootte beschikbaar hebben, moeten we dit daadwerkelijk in wisselruimte veranderen.

Eerst moeten we de rechten van het bestand vergrendelen, zodat alleen gebruikers met root-privileges de inhoud kunnen lezen. Dit voorkomt dat normale gebruikers het bestand kunnen benaderen, wat aanzienlijke veiligheidsimplicaties zou hebben.

Maak het bestand alleen toegankelijk voor root door te typen:

  • sudo chmod 600 /swapfile

Verkijk de wijziging van de machtigingen door te typen:

  • ls -lh /swapfile
Output
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Zoals u kunt zien, heeft alleen de root-gebruiker de lees- en schrijfvlaggen ingeschakeld.

We kunnen nu het bestand markeren als swap ruimte door te typen:

  • sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Na het markeren van het bestand, kunnen we het swap bestand inschakelen, zodat ons systeem het kan gaan gebruiken:

  • sudo swapon /swapfile

Verkifieer dat de swap beschikbaar is door te typen:

  • sudo swapon --show
Output
NAME TYPE SIZE USED PRIO/swapfile file 1024M 0B -2

We kunnen de uitvoer van het free hulpprogramma nogmaals controleren om onze bevindingen te bevestigen:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 220M 680K 680M 722MSwap: 1.0G 0B 1.0G

Onze swap is met succes ingesteld en ons besturingssysteem zal hem beginnen te gebruiken als dat nodig is.

Stap 5 – Het swap bestand permanent maken

Onze recente wijzigingen hebben het swap bestand voor de huidige sessie geactiveerd. Echter, als we opnieuw opstarten, zal de server de swap instellingen niet automatisch behouden. We kunnen dit veranderen door het swap bestand toe te voegen aan ons /etc/fstab bestand.

Back-up van het /etc/fstab bestand voor het geval er iets fout gaat:

  • sudo cp /etc/fstab /etc/fstab.bak

Voeg de swap file informatie toe aan het eind van uw /etc/fstab bestand door te typen:

  • echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Volgende zullen we enkele instellingen bekijken die we kunnen updaten om onze swap ruimte aan te passen.

Stap 6 – Het afstellen van uw swap instellingen

Er zijn een paar opties die u kunt configureren die invloed hebben op de prestaties van uw systeem als het om swap gaat.

Het aanpassen van de Swappiness eigenschap

De swappiness parameter configureert hoe vaak uw systeem gegevens uit het RAM naar de swap ruimte wisselt. Dit is een waarde tussen 0 en 100 die een percentage vertegenwoordigt.

Met waarden dicht bij nul, zal de kernel geen gegevens naar de schijf swappen, tenzij dit absoluut noodzakelijk is. Onthoud dat interacties met het wisselbestand “duur” zijn in de zin dat ze veel langer duren dan interacties met het RAM en ze kunnen een aanzienlijke prestatievermindering veroorzaken. Door het systeem te vertellen niet veel op de swap te vertrouwen, wordt uw systeem over het algemeen sneller.

Waarden die dichter bij 100 liggen, zullen proberen meer gegevens in de swap te stoppen in een poging om meer RAM-ruimte vrij te houden. Afhankelijk van het geheugenprofiel van uw toepassingen of waar u uw server voor gebruikt, kan dit in sommige gevallen beter zijn.

We kunnen de huidige swappiness-waarde zien door te typen:

  • cat /proc/sys/vm/swappiness
Output
60

Voor een desktop is een swappiness-instelling van 60 geen slechte waarde. Voor een server wilt u het misschien dichter bij 0 brengen.

We kunnen de swappiness op een andere waarde zetten door het sysctl commando te gebruiken.

Om de swappiness bijvoorbeeld op 10 te zetten, zouden we kunnen typen:

  • sudo sysctl vm.swappiness=10
Output
vm.swappiness = 10

Deze instelling zal blijven bestaan tot de volgende reboot. We kunnen deze waarde automatisch instellen bij het herstarten door de regel toe te voegen aan ons /etc/sysctl.conf bestand:

  • sudo nano /etc/sysctl.conf

Onderaan kunt u toevoegen:

/etc/sysctl.conf
vm.swappiness=10

Bewaar en sluit het bestand als u klaar bent.

De instelling voor de cachedruk aanpassen

Een andere gerelateerde waarde die u misschien wilt aanpassen is de vfs_cache_pressure. Deze instelling stelt in hoeveel het systeem ervoor kiest om inode- en dentry-informatie te cachen boven andere gegevens.

Basically, this is access data about the filesystem. Dit is over het algemeen erg kostbaar om op te zoeken en wordt erg vaak opgevraagd, dus het is een uitstekend iets voor uw systeem om te cachen. U kunt de huidige waarde zien door het proc bestandssysteem opnieuw op te vragen:

  • cat /proc/sys/vm/vfs_cache_pressure
Output
100

Zo als het nu is ingesteld, verwijdert ons systeem te snel inode-informatie uit de cache. We kunnen dit op een meer conservatieve instelling zoals 50 zetten door te typen:

  • sudo sysctl vm.vfs_cache_pressure=50
Output
vm.vfs_cache_pressure = 50

Alweer, dit is alleen geldig voor onze huidige sessie. We kunnen dat veranderen door het toe te voegen aan ons configuratiebestand zoals we deden met onze swappiness instelling:

  • sudo nano /etc/sysctl.conf

Onderaan, voeg de regel toe die uw nieuwe waarde specificeert:

/etc/sysctl.conf
vm.vfs_cache_pressure=50

Bewaar en sluit het bestand als u klaar bent.

Conclusie

Het volgen van de stappen in deze handleiding zal u wat ademruimte geven in gevallen die anders zouden leiden tot “out-of-memory” uitzonderingen. Swapruimte kan ongelooflijk nuttig zijn bij het voorkomen van enkele van deze veel voorkomende problemen.

Als u tegen OOM (out of memory) fouten aanloopt, of als u merkt dat uw systeem niet in staat is om de toepassingen te gebruiken die u nodig hebt, is de beste oplossing het optimaliseren van uw toepassingsconfiguraties of het upgraden van uw server.

Similar Posts

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.