Ich konnte zwar memcached on Debian verwenden, um den Standard-11211-Port zu verwenden, aber ich hatte große Schwierigkeiten, den Unix-Socket einzurichten.
Nach dem, was ich gelesen habe, weiß ich, dass ich ein erstellen memcache.socket
und hinzufügen muss:
-s /path/to/memcache.socket
-a 0766
An /etc/memcached.conf
und kommentieren Sie den Standardverbindungsport und die Standard-IP aus, d. H.
-p 11211
-l 127.0.0.1
Beim Neustart von memcached werden jedoch interne Serverfehler auf der Drupal-Site angezeigt.
Ich versuche, Unix-Sockets zu implementieren, um TCP / IP-Overhead zu vermeiden und die Gesamtleistung im Memcached zu steigern. Ich bin mir jedoch nicht sicher, wie viel Leistungsgewinn man von dieser Optimierung erwarten kann.
Ich schätze Ihre Hinweise oder möglicherweise Konfigurationen, um dies zu beheben.
Antworten:
Möglicherweise funktioniert das Festlegen des Socket-Pfads nicht. Memcached löscht Berechtigungen, bevor es seinen Socket erstellt, obwohl es seine PID geschrieben hat. Es ist üblich, den Socket
/var/run
einzulegen (z. B. wie bei MySQL), aber nur Root kann dort schreiben. Erstellen Sie ihn/var/run/memcached
und geben Sie ihn an niemanden weiter. Legen Sie ihn dann/var/run/memcached/memcached.sock
als Socket-Pfad fest. Es zu schreiben/tmp
würde auch funktionieren, aber von Natur aus könnte es verwüstet werden; Das Einstecken/var/run
ist etwas dauerhafter.Sie können überprüfen, ob es funktioniert, indem Sie mit netcat eine Verbindung herstellen:
nc -U /var/run/memcached/memcached.sock
Geben Sie einfach
stats
an der leeren Eingabeaufforderung ein. Wenn es funktioniert, erhalten Sie eine Menge Ausgabe.quelle
nobody
kann ohne die entsprechende Berechtigung nicht in einen Ordner im Stammverzeichnis geschrieben werden.Ich glaube, der Socket muss weltweit ausführbar und nicht beschreibbar sein. Wenn eine PHP-Benachrichtigung mit errno = 32 Broken Pipe angezeigt wird , passen Sie die Memcached-Zugriffsmaske auf 0755 an
Stellen Sie außerdem sicher, dass der Memcached-Daemon von Drupal
0
in der Konfiguration über den TCP-Port von verfügt . Ein nicht festgelegter Port verwendet standardmäßig11211
die Socket-Verbindung und verwirrt sie.quelle
hinzugefügt zu / etc / default / memcached:
zu /etc/memcached.conf hinzugefügt:
quelle
Ich habe den Leistungsschub der Verwendung von Memcached-Unix-Sockets verglichen. Es ist 33% schneller, Unix-Sockets in meinen Tests mit der PHP-CLI zu verwenden.
Ich fand, dass es wichtig ist, den Memcache-Benutzer zur www-Datengruppe hinzuzufügen und dem Unix-Socket 775 Berechtigungen zu erteilen, damit sowohl der PHP-Handler als auch der Memcache-Benutzer ihn ausführen können.
Die Benchmarks und die Beschreibung finden Sie hier - obwohl es für WordPress ist, sollte es für Drupal funktionieren, da es sehr wahrscheinlich ein Berechtigungsproblem ist.
quelle
Hinweis: Wenn Sie in Kubernetes einen alpinen Container verwenden, sieht die Pod-Spezifikation mit Gesundheitssonden ungefähr so aus:
Es dauerte eine Weile, um die richtigen Einstellungen und die Verbindung zu einem lokalen Unix-Domain-Socket über die Busybox herauszufinden.
quelle