Optimaliseer uw databaseprestaties door de Memcached-server te gebruiken met uw PHP- en Python-apps
Als je ooit de pijn hebt gevoeld van een hoge databasebelasting die de vertragingen in je web-apps veroorzaakte en je je afvroeg: "Is er een manier om de latentie veroorzaakt door DB-query's te verminderen?", dan is het antwoord op die vraag een groot ja. Memcached een vriendelijke geheugencache-daemon voor de buurt is hier om al je problemen op te lossen! Het cachen van de DB is een van de eenvoudigste methoden om de belasting van de DB te verlichten en de dynamische webtoepassingen te versnellen.
Memcached definieert zichzelf als een krachtig, gedistribueerd cachesysteem voor geheugenobjecten, generiek van aard, maar oorspronkelijk bedoeld voor gebruik bij het versnellen van dynamische webapplicaties door de databasebelasting te verlichten. Ontwikkeld door Brad Fitzpatrick voor zijn website LiveJournal in 2003.
In dit artikel zullen we bekijken hoe u Memcached in Ubuntu 20.04 kunt installeren en configureren en kijken naar de taalspecifieke clients.
Vereisten
Een systeem geïnstalleerd met Ubuntu 20.04 met een gebruiker met beheerdersrechten, dat wil zeggen: sudo
gebruiker.
Installatie
Memcached is beschikbaar op de officiële Ubuntu 20.04-repository, naast Memcached gaan we ook een CLI-tool installeren die bekend staat als libmemcached-tools
om Memcached te beheren. Voer gewoon de volgende opdracht uit om beide te installeren:
sudo apt installeer memcached libmemcached-tools
Installatie verifiëren
Nadat de installatie is voltooid, start de Memcached-daemon vanzelf op de achtergrond. Om de installatie te verifiëren, kunnen we een commando gebruiken van libmemcached-tools
pakket om Memcached-serverstatistieken te krijgen. Ofwel rennen
memcstat --servers localhost
of
memcstat --servers 127.0.0.1
De memcstat
commando toont de statistieken van de actieve server. Het bovenstaande commando zal resulteren in de output die hieronder wordt weergegeven.
Verschillende statistieken zoals: uptime
in seconden, versie
en pid
wordt weergegeven als uitvoer. Als er echter geen uitvoer wordt weergegeven, is het mogelijk dat Memcached niet actief is. Daarom moet u de volgende opdracht uitvoeren om de Memcached-server te starten.
sudo systemctl start memcached
Gebruik de volgende opdracht om de Memcached-server uit te voeren bij het opstarten van het systeem.
sudo systemctl memcached inschakelen
Geheugencache configureren
Als u uw memcached op de websiteserver zelf hebt geïnstalleerd, hoeft u het configuratiebestand niet te wijzigen, aangezien memcached vooraf is geconfigureerd om met localhost te werken.
Aan de andere kant, als je Memcached op een apart systeem hebt geïnstalleerd, moet je de configuratie wijzigen om de externe server toegang te geven tot de Memcached-server.
Externe toegang instellen voor Memcached Server
Memcached is kwetsbaar voor DDoS-aanvallen (Distributed Denial of Service). Door een onjuiste firewallregel en open UDP-poorten blijft uw server open en kwetsbaar voor DDoS-aanvallen.
Om het risico te verkleinen, kunnen we het UDP-protocol voor Memcached in de configuratie uitschakelen of een firewall instellen om alleen vertrouwde servers toe te staan.
Uit de doos wordt Ubuntu geleverd zonder geopende TCP- of UDP-poorten. Verder is de firewall-daemon ufw
(ongecompliceerde firewall) is standaard niet ingeschakeld.
We gaan de firewall inschakelen en de Memcached-configuratie instellen zodat we de DDoS-kwetsbaarheid kunnen verkleinen.
Schakel eerst de ufw
door het volgende commando uit te voeren:
sudo systemctl inschakelen ufw
Start dan de ufw
service door de onderstaande opdracht uit te voeren:
sudo systemctl start ufw
Nu de firewall actief is, kunnen we eindelijk de firewallregels instellen. Schakel eerst poort 22 in om SSH-verbindingen toe te staan. SSH is nodig om op afstand toegang te krijgen tot de gewenste server.
sudo ufw toestaan 22
Ten tweede moet u het IP-adres van de client weten, dat wil zeggen de host van de webtoepassing en het IP-adres van de server, dat wil zeggen de Memcached-server.
Laten we in dit geval aannemen dat het IP-adres van de klant is: 192.168.0.4
en Memcached server IP te zijn 192.168.0.5
op een lokaal netwerk.
Dus om externe toegang van de memcached-server tot de clientserver toe te staan, voer je uit:
sudo ufw toestaan van 192.168.0.4 naar elke poort 11211
Vervang de 192.168.0.4
met uw gewenste Client IP-adres.
Bewerk vervolgens het Memcached-configuratiebestand op /etc/memcached.conf
door rennen nano
opdracht.
sudo nano /etc/memcached.conf
De memcached.conf
configuratiebestand wordt geopend met de nano-editor, zoek naar de -l 127.0.0.1
regel in de configuratie en vervang 127.0.0.1
met uw Memcached Server IP of in dit geval 192.168.0.5
.
Na het vervangen van de pers ctrl+o
om naar het configuratiebestand te schrijven en op enter te drukken, drukt u op ctrl+x
om nano te verlaten.
Start de Memcached-server opnieuw en ufw
firewall door de onderstaande opdracht uit te voeren.
sudo systemctl herstart memcached ufw
Nu zijn we klaar met de installatie en configuratie van de Memcached-server op Ubuntu 20.04.
Verbinding maken met Memcached-server
Om de Memcached-server te gebruiken, moet u een taalspecifieke client installeren. Gelukkig heeft Memcached ondersteuning voor veel populaire talen.
Dus laten we eens kijken hoe te installeren php
en Python
client voor Memcached.
PHP is de meest populaire server-side scripttaal en Memcached wordt meestal gebruikt door webontwikkelaars om de serverprestaties van web-apps aangedreven door PHP te verbeteren.
Om memcached-ondersteuning in php te installeren, loop:
sudo apt install php-memcached
Python heeft ook verschillende bibliotheken die kunnen werken en communiceren met de Memcached-server, zoals: pymemcached
of python-memcached
.
U kunt memcached voor python installeren door de volgende pip-opdrachten uit te voeren:
pip installeer pymemcache
pip installeer python-memcached
Tot slot hebben we gekeken naar de installatie, configuratie en enkele taalspecifieke clients van Memcached in Ubuntu 20.04.
Om meer te weten te komen over het precieze en geavanceerde gebruik van Memcached, kijk eens naar Memcached Wiki.