Brad Fitzpatrick entwickelte Memcached 2003 für die LiveJournal-Website als leistungsstarkes Open-Source-Caching-System, um die Leistung dynamischer Webanwendungen durch Reduzierung der Datenbanklast zu verbessern. Seitdem ist es für viele Websites und Anwendungen mit hohem Datenverkehr unverzichtbar geworden. Bevor wir Memcached auf Debian 12 Bookworm, Debian 11 Bullseye oder Debian 10 Buster installieren, wollen wir unten einige wichtige Punkte zu Memcached untersuchen.
Hauptfunktionen und Vorteile:
- Skalierbarkeit: Memcached verarbeitet Millionen von Vorgängen pro Sekunde und ist ideal für groß angelegte Webanwendungen und -dienste.
- Verteiltes Caching: Mit einer verteilten Caching-Architektur ermöglicht Memcached eine horizontale Skalierung über mehrere Server hinweg und erweitert so die gesamte Cache-Kapazität.
- In-Memory-Speicher: Als In-Memory-Schlüssel-Wert-Speicher gewährleistet Memcached einen schnellen Zugriff auf zwischengespeicherte Daten und reduziert die Latenz in festplattenbasierten Speichersystemen erheblich.
- Einfache API: Memcached bietet eine unkomplizierte API, die verschiedene Programmiersprachen unterstützt, darunter PHP, Python, Ruby und andere.
- Cacheablauf: Das System ermöglicht Entwicklern, Ablaufzeiten für zwischengespeicherte Daten festzulegen und so die automatische Entfernung veralteter oder nicht mehr aktueller Daten aus dem Cache zu erleichtern.
- Leicht: Mit minimalem CPU- und Speicheraufwand läuft Memcached effizient auf verschiedenen Serverkonfigurationen, ohne die Systemressourcen wesentlich zu belasten.
- Flexible Datentypen: Memcached unterstützt verschiedene Datentypen wie Zeichenfolgen, Ganzzahlen und komplexe Objekte und ist daher vielseitig für unterschiedliche Anwendungsfälle geeignet.
Die folgende Anleitung führt Sie durch den Installationsprozess von Memcached unter Debian und verwendet dabei zwei Methoden: das Standard-Debian-Repository für die stabilste Version oder das Herunterladen und Kompilieren der neuesten Binärdatei für diejenigen, die lieber mit der neuesten Version arbeiten.
Methode 1: Installieren Sie Memcached über das Standard-APT-Repository
In diesem Abschnitt installieren wir Memcached mithilfe des APT-Paketmanagers auf Ihrem Debian-Linux-System. Dazu aktualisieren wir Ihre Systempakete und installieren Memcached mit einigen hilfreichen Tools.
Aktualisieren Sie Ihr Debian-System vor der Memcached-Installation
Um sicherzustellen, dass Sie über die neuesten Paketversionen und Sicherheitsupdates verfügen, aktualisieren Sie zunächst Ihr Debian-System. Führen Sie den folgenden Befehl aus:
sudo apt update && sudo apt upgrade
Dieser Befehl aktualisiert Ihre Paketliste und aktualisiert veraltete Pakete auf die neuesten Versionen.
Installieren Sie Memcached und Libmemcached-Tools
Debian enthält Memcached in seinen Standard-Repositorys, was die Installation vereinfacht. Um Memcached zu installieren, führen Sie den folgenden Befehl aus:
sudo apt install memcached libmemcached-tools
Dieser Befehl installiert sowohl Memcached als auch die libmemcached-tools
Paket. Das libmemcached-tools
Das Paket bietet zusätzliche Befehlszeilenprogramme, die mehr Interaktions- und Verwaltungsfunktionen mit Memcached ermöglichen.
Methode 2: Installieren Sie Memcached über die Quelle
In diesem Abschnitt wird die Installation von Memcached auf Ihrem Debian-System durch Kompilieren aus dem Quellcode beschrieben. Die Installation aus der Quelle kann von Vorteil sein, wenn Sie die neueste Version von Memcached verwenden oder den Build an bestimmte Anforderungen anpassen möchten.
Laden Sie die Memcached-Quelle herunter
Besuchen Sie zunächst die Memcached Seite mit der neuesten Version um die aktuelle Version zu finden. Verwenden Sie die folgenden wget
Befehl zum direkten Herunterladen:
wget https://memcached.org/latest
Memcached-Quellarchiv extrahieren
Extrahieren Sie als Nächstes den heruntergeladenen Quellcode, indem Sie den folgenden Befehl ausführen:
tar -xvf latest
Bevor Sie fortfahren, navigieren Sie zum extrahierten Verzeichnis. Der Verzeichnisname hängt von der heruntergeladenen Version ab:
cd memcached-{place version number here}
Ersetzen {version_number}
durch die tatsächliche Versionsnummer.
Installieren Sie die zum Kompilieren von Memcached erforderlichen Erstpakete
Bevor Sie Memcached kompilieren, müssen Sie die erforderlichen Build-Abhängigkeiten installieren. Führen Sie den folgenden Befehl aus, um sie zu installieren:
sudo apt install build-essential libevent-dev gcc make libc6-dev
Die installierten Pakete dienen folgenden Zwecken:
gcc
: Ein bekannter C-Compiler für die Memcached-Quelldateien.make
: Leitet die Kompilierung.libc6-dev
: Bietet einen Verweis auf die GNU C-Bibliothek und Header-Dateien.libevent-dev
: Enthält Entwicklungsdateien für asynchrone Ereignisbenachrichtigungen.
Konfigurieren der Installation
Verwenden Sie die --prefix=
Parameter zum Festlegen des Verzeichnisses, in dem die Binärdateien und Bibliotheken von Memcached installiert werden:
./configure --prefix=/usr/local
Memcached-Quellcode kompilieren
Kompilieren Sie den Memcached-Quellcode mit dem make
Befehl:
make
Testen Sie Memcached, indem Sie die aktuelle Version bestätigen:
./memcached --version
Installieren Sie Memcached über den Befehl „make install“
Sobald der Kompilierungsprozess abgeschlossen ist, installieren Sie Memcached, indem Sie den folgenden Befehl ausführen:
sudo make install
Dieser Befehl installiert Memcached auf Ihrem System und macht es über die Befehlszeile zugänglich. Um sicherzustellen, dass das System die neuen Bibliotheken erkennt, führen Sie Folgendes aus:
sudo ldconfig
Überprüfen der Installation von Memcached
Um zu überprüfen, ob Memcached erfolgreich installiert wurde, führen Sie den folgenden Befehl aus:
memcached -V
Dieser Befehl zeigt die installierte Memcached-Version an und bestätigt die erfolgreiche Installation aus dem Quellcode.
Erstellen Sie einen Systemd-Dienst für Memcached
Wenn Sie Memcached aus der Quelle installieren, wird nicht automatisch eine systemd-Dienstdatei erstellt. Um Memcached als Dienst auszuführen und zu verwalten, verwenden Sie systemctl
müssen Sie eine benutzerdefinierte systemd-Dienstdatei für Memcached erstellen. Befolgen Sie diese Schritte, um den Dienst zu erstellen und zu aktivieren:
Erstellen Sie eine neue Datei mit dem Namen memcached.service
im /etc/systemd/system
Verzeichnis mit einem Texteditor Ihrer Wahl. In diesem Beispiel verwenden wir nano
:
sudo nano /etc/systemd/system/memcached.service
Fügen Sie den folgenden Inhalt hinzu memcached.service
Datei:
[Unit]
Description=Memcached Service
After=network.target
[Service]
Type=simple
User=memcache
Group=memcache
ExecStart=/usr/local/bin/memcached /etc/memcached.conf
Restart=always
[Install]
WantedBy=multi-user.target
Speichern Sie die Datei und beenden Sie den Texteditor.
Ein ... kreieren memcache
Benutzer und Gruppe, um den Dienst sicher auszuführen:
sudo useradd -r -s /sbin/nologin -U -M memcache
Laden Sie die systemd-Konfiguration neu, damit sie die neue Servicedatei erkennt:
sudo systemctl daemon-reload
Starten Sie abschließend den Dienst:
sudo systemctl enable memcached --now
Verwalten des Memcached-Dienststatus
In diesem Abschnitt wird die Verwaltung des Memcached-Dienstes auf Ihrem Debian-System behandelt. Dazu gehört das Überprüfen des Dienststatus, das Starten und Stoppen des Dienstes und das Konfigurieren für die Ausführung beim Systemstart.
Überprüfen Sie den Memcached-Dienststatus
Standardmäßig sollte Memcached nach der Installation ausgeführt werden. Um den Status zu überprüfen, verwenden Sie die systemctl
den Befehl wie folgt:
systemctl status memcached
Dieser Befehl zeigt den aktuellen Status des Memcached-Dienstes an.
Starten Sie den Memcached-Dienst
Wenn Memcached nicht läuft, können Sie den Dienst mit dem folgenden Befehl starten:
sudo systemctl start memcached
Aktivieren Sie Memcached beim Systemstart
Um sicherzustellen, dass der Memcached-Dienst beim Systemstart automatisch gestartet wird, verwenden Sie den folgenden Befehl:
sudo systemctl enable memcached
Stoppen Sie den Memcached-Dienst
Wenn Sie den Memcached-Dienst stoppen müssen, verwenden Sie diesen Befehl:
sudo systemctl stop memcached
Deaktivieren Sie Memcached beim Systemstart
Um zu verhindern, dass der Memcached-Dienst beim Systemstart automatisch gestartet wird, führen Sie den folgenden Befehl aus:
sudo systemctl disable memcached
Starten Sie den Memcached-Dienst neu
Wenn Sie den Memcached-Dienst beispielsweise nach Konfigurationsänderungen neu starten müssen, verwenden Sie diesen Befehl:
sudo systemctl restart memcached
Überprüfen Sie, ob Memcached den Standardport überwacht.
Überprüfen Sie abschließend, ob Memcached aktiv auf dem lokalen Host über den Standardport lauscht. 11211
Um dies zu bestätigen, führen Sie den folgenden Befehl aus:
ps -ef | grep memcached
Die Ausgabe sollte eine Zeile enthalten, die angibt, dass Memcached ausgeführt wird und auf dem angegebenen Port lauscht. Sie sollte etwa wie folgt aussehen:
memcache 5934 1 0 09:36 ? 00:00:00 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid
root 6591 3653 0 09:55 pts/0 00:00:00 grep memcached
Tipps zum Konfigurieren von Memcached
In diesem Abschnitt wird die Konfiguration der Memcached-Einstellungen durch Bearbeiten der memcached.conf
Datei. Wir besprechen das Anpassen der Abhör-IP-Adresse, das Deaktivieren von UDP und das Ändern der Standardspeicherzuweisung.
Öffnen Sie die Memcached-Konfigurationsdatei
Öffnen Sie die Memcached-Konfigurationsdatei unter /etc/memcached.conf
mit einem Texteditor, wie zum Beispiel nano
:
sudo nano /etc/memcached.conf
Benutzer, die Memcached aus dem Quellcode kompiliert haben, müssen dies erstellen. Wenn Sie es also zum ersten Mal öffnen, ist die Datei im Vergleich zur APT-Methode leer. Sie können dies kopieren, um mit der Anpassung zu beginnen:
# Example memcached.conf file
# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
# Note that the daemon will grow to this size, but does not start out holding this much
# memory
-m 64
# Default port is 11211
-p 11211
# Run the daemon as a background process
-d
# Use syslog logging
-s
# Enable verbose logging
-vv
# Set the maximum number of simultaneous connections
-c 1024
Anpassen der Listening-IP-Adresse
Standardmäßig hört Memcached auf die IP-Adresse 127.0.0.1. Überprüfen Sie den Parameter -l in der Konfigurationsdatei und stellen Sie sicher, dass er auf die richtige IP-Adresse eingestellt ist. Wenn Sie die IP-Adresse ändern müssen, ersetzen Sie 127.0.0.1
mit der neuen IP-Adresse:
-l 127.0.0.1
UDP deaktivieren (optional)
Wenn Sie UDP-Unterstützung nicht benötigen, wird empfohlen, sie zu deaktivieren. Um UDP zu deaktivieren, fügen Sie der Konfigurationsdatei die folgende Zeile hinzu:
-U 0
Konfigurieren der Speicherzuweisung
Die standardmäßige Speicherzuweisung für Memcached beträgt 64 MB, was für größere Websites möglicherweise nicht ausreicht. Erwägen Sie, die Speicherzuweisung auf einen höheren Wert einzustellen, um Memcached optimal zu nutzen.
Um die Speicherzuordnung festzulegen, finden Sie die -m
Parameter in der Konfigurationsdatei und ersetzen Sie den Standardwert durch die gewünschte Menge (in MB). Um beispielsweise 2 GB Speicher zuzuweisen, setzen Sie den Wert auf 2000
:
-m 2000
Passen Sie diese Einstellung basierend auf dem verfügbaren Speicher und den Anforderungen Ihres Servers an.
Speichern und Memcached neu starten
Nachdem Sie die erforderlichen Änderungen vorgenommen haben, speichern Sie die Konfigurationsdatei durch Drücken von CTRL+O
, gefolgt von Y
, und dann CTRL+X
, um den Texteditor zu beenden. Starten Sie abschließend den Memcached-Dienst neu, damit die Änderungen wirksam werden:
sudo systemctl restart memcached
Zusätzliche Memcached-Konfigurationsbeispiele
Zusätzlich zu den zuvor beschriebenen Konfigurationsoptionen gibt es noch zahlreiche weitere Einstellungen, mit denen Sie Memcached Ihren Anforderungen entsprechend optimieren können. Hier sind einige Beispiele und kurze Demonstrationen:
Geben Sie den Benutzer und die Gruppe an
Memcached wird unter einem bestimmten Benutzer und einer bestimmten Gruppe ausgeführt, die mit dem -u
Parameter. Um beispielsweise Memcached als memcache
Benutzer, fügen Sie der Konfigurationsdatei die folgende Zeile hinzu:
-u memcache
Große Speicherseiten aktivieren
Das Aktivieren dieser Funktion kann die Leistung verbessern, wenn Ihr System große Speicherseiten unterstützt. Um große Speicherseiten zu aktivieren, finden Sie die -L
Parameter und heben Sie die Kommentierung auf (entfernen Sie das #
am Anfang der Zeile):
-L
Konfigurieren der maximalen Elementgröße
Memcached hat standardmäßig eine maximale Elementgröße von 1 MB. Um die maximale Elementgröße zu erhöhen, verwenden Sie die -I
Parameter gefolgt von der gewünschten Größe. Um beispielsweise die maximale Elementgröße auf 5 MB festzulegen, fügen Sie der Konfigurationsdatei die folgende Zeile hinzu:
-I 5m
Legen Sie die maximale Anzahl von Threads fest
Memcached verwendet standardmäßig vier Threads. Sie können den Parameter verwenden, um die Anzahl der Threads entsprechend den Fähigkeiten und der Arbeitslast Ihres Servers zu erhöhen oder zu verringern. Um beispielsweise die Anzahl der Threads auf 8 festzulegen, fügen Sie die folgende Zeile hinzu:
-t 8
Konfigurieren des Leerlauf-Timeouts
Memcached schließt inaktive Verbindungen nach einer bestimmten Zeit der Inaktivität automatisch. Um das Leerlauf-Timeout zu ändern, verwenden Sie die -o
Parameter gefolgt von idle_timeout
und die gewünschte Anzahl von Sekunden. Um beispielsweise das Leerlauf-Timeout auf 600 Sekunden (10 Minuten) einzustellen, fügen Sie die folgende Zeile hinzu:
-o idle_timeout=600
SASL-Authentifizierung aktivieren
Sie können die SASL-Unterstützung (Simple Authentication and Security Layer) aktivieren, wenn Sie für den Zugriff auf Ihren Memcached-Server eine Authentifizierung benötigen. Um SASL zu aktivieren, finden Sie den -S
Parameter und heben Sie die Kommentierung auf (entfernen Sie das #
am Anfang der Zeile):
-S
Denken Sie daran, den Memcached-Dienst immer neu zu starten, nachdem Sie Änderungen an der Konfigurationsdatei vorgenommen haben:
sudo systemctl restart memcached
Installieren Sie die UFW-Firewall für Memcached
Um die Sicherheit Ihrer Memcached-Instanz zu gewährleisten, ist es wichtig, Ihre Firewall-Regeln richtig zu konfigurieren. In diesem Abschnitt erfahren Sie, wie Sie die Uncomplicated Firewall (UFW) installieren und konfigurieren, um Ihren Memcached-Server zu sichern.
Überprüfen Sie, ob UFW installiert ist
Lassen Sie uns zunächst überprüfen, ob UFW bereits auf Ihrem Debian-System installiert ist:
sudo ufw --version
Wenn UFW installiert ist, sehen Sie die Versionsnummer in der Ausgabe. Wenn nicht, müssen Sie es installieren.
Installieren Sie UFW unter Debian für Memcached
Um UFW auf Ihrem Debian-System zu installieren, führen Sie den folgenden Befehl aus:
sudo apt install ufw
Nachdem die Installation abgeschlossen ist, aktivieren Sie UFW mit dem folgenden Befehl:
sudo ufw enable
Konfigurieren Sie UFW-Regeln für Memcached
Nachdem UFW installiert und aktiviert ist, müssen Sie Zulassungsregeln für TCP-Port 11211 erstellen. Die von Ihnen erstellten Regeln hängen von Ihrer Installation und Ihren Anforderungen ab, unabhängig davon, ob Sie eine einzelne IP-Netzwerkverbindung verwenden oder mit mehreren Instanzen in einem Clusternetzwerk arbeiten.
Beispiel für eine einzelne IP-Netzwerkverbindung
Erlauben Sie den Zugriff auf Memcached von einer bestimmten IP-Adresse aus:
sudo ufw allow proto tcp from <ip_address> to any port 11211
Beispiel einer Cluster-IP-Netzwerkverbindung mit mehreren Instanzen
Erlauben Sie den Zugriff auf Memcached aus einem Subnetz von IP-Adressen:
sudo ufw allow proto tcp from <ip_address>/24 to any port 11211
Beachten Sie, dass die zweite UFW-Regel eine Subnetzregel ist. Stellen Sie sicher, dass das interne Netzwerk sicher und vertrauenswürdig ist, bevor Sie den Zugriff zulassen.
Schritt 4: UFW-Regeln überprüfen
Überprüfen Sie nach dem Einrichten der entsprechenden Regeln, ob sie richtig konfiguriert sind, indem Sie die aktuellen UFW-Regeln auflisten:
sudo ufw status
Die Ausgabe sollte Ihre konfigurierten Regeln anzeigen und sicherstellen, dass Ihre Memcached-Instanz mit UFW gesichert ist.
Installieren Sie Memcached-Bibliotheken
Memcached bietet Erweiterungen für verschiedene Programmiersprachen, wird aber am häufigsten mit PHP verwendet. Dieser Abschnitt führt Sie durch die Installation der Memcached-Bibliotheken für PHP, Python und Perl und die Konfiguration von Memcached für Apache- und Nginx-Webserver.
Installieren Sie PHP-Bibliotheken für Memcached
Um die PHP-Bibliothek für Memcached zu installieren, führen Sie den folgenden Befehl aus:
sudo apt install php-memcached libapache2-mod-php php php-cli
Konfigurieren Sie Memcached für den Apache-HTTP-Server
Wenn Sie den Apache-HTTP-Server verwenden, aktivieren Sie das Memcached-Modul, indem Sie den folgenden Befehl ausführen:
sudo phpenmod memcached && sudo systemctl restart apache2
Konfigurieren Sie Memcached für den Nginx-HTTP-Server
Die Memcached-Unterstützung wird standardmäßig in Ihrem PHP-Konfigurationsblock aktiviert, sobald die PHP-Bibliothek für Nginx-Benutzer installiert ist.
Unten sehen Sie ein einfaches Beispiel für einen Nginx-Serverblock:
server {
listen 80;
server_name example.com;
root /var/www/example.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Installieren Sie die Python-Bibliothek für Memcached
Um Python-Unterstützung für Memcached zu installieren, führen Sie den folgenden Befehl aus:
sudo apt install python3-pymemcache
Installieren Sie die Perl-Bibliothek für Memcached
Um Perl-Unterstützung für Memcached zu installieren, führen Sie den folgenden Befehl aus:
sudo apt install libcache-memcached-libmemcached-perl
Zugriff auf Memcached über die Befehlszeile
Memcached kann über verschiedene Software- und Web-Benutzeroberflächen überwacht und verwaltet werden. Die direkte Interaktion mit Memcached über die Befehlszeile ist jedoch häufig die einfachste Methode, um die Leistung zu überprüfen und den Inhalt zu verwalten.
Stellen Sie zunächst per Telnet eine Verbindung zu Ihrem Memcached-Dienst her:
telnet localhost 11211
Beispielausgabe:
Versuch 127.0.0.1... Verbunden mit localhost. Escape-Zeichen ist '^]'.
Als nächstes können Sie sich mit dem folgenden Befehl einen Überblick über Ihren Memcached-Dienst verschaffen:
stats
Dieser Befehl gibt verschiedene Statistiken zu Ihrer Memcached-Instanz zurück, beispielsweise Betriebszeit, Anzahl der Elemente im Cache und Anzahl der Client-Verbindungen.
Sie können Ihre Analyse verfeinern, indem Sie Memcached-Slabs (Speicherpartitionen) untersuchen. Sie können beispielsweise die Slabs in der verbundenen Instanz mit folgendem auflisten:
stats slabs
Und erhalten Sie eine Liste der Platten, einschließlich der Anzahl der in jeder Platte gespeicherten Elemente, mithilfe von:
stats items
Um auf in Memcached gespeicherte Daten zuzugreifen und diese zu bearbeiten, können Sie den cachedump
Befehl zum Auflisten der Schlüssel. Um alle Elemente in einem bestimmten Slab aufzulisten, führen Sie den folgenden Befehl aus:
stats cachedump [slab ID] [number of items, 0 for all items]
Zum Beispiel:
stats cachedump 1 0
Beispielausgabe:
ITEM testkey [9 b; 1296857316 s] ENDE
In diesem Beispiel enthält Slab 1 ein Element mit dem Schlüssel „testkey“. Um den Wert dieses Elements abzurufen, verwenden Sie die get
Befehl:
get testkey
Beispielausgabe:
WERT Testschlüssel 0 9 Testdaten ENDE
Um abschließend ein zwischengespeichertes Element wie „testkey“ zu löschen, verwenden Sie den folgenden Befehl:
delete testkey
Beispielausgabe:
GELÖSCHT
Abschluss
Zusammenfassend lässt sich sagen, dass die Installation und Konfiguration von Memcached unter Debian Linux die Leistung Ihrer Webanwendungen erheblich verbessern kann, indem es ein schnelles, effizientes und benutzerfreundliches Caching-System bereitstellt. Wenn Sie die in diesem Handbuch beschriebenen Schritte befolgen, können Sie Memcached erfolgreich einrichten, mit Ihrem bevorzugten Webserver konfigurieren und mit UFW sichern. Mit der richtigen Konfiguration und Verwaltung kann Memcached für die Optimierung Ihrer Anwendungen und die Bereitstellung einer besseren Benutzererfahrung unverzichtbar werden.