Memcache-Grundkonfiguration


14

Ich habe memcache für eine Drupal-Site mit der memcached pecl-Erweiterung installiert. Alles läuft gut, aber ich habe immer noch Probleme mit den Konfigurationseinstellungen.

Zum Beispiel folgende Ratschläge auf drupal.org

You should probably lock down the memcache server so that it only listens for 
connections from the hosts that need to be served, as the default is that 
memcache listens to connections from all addresses. 
So, to close that hole, edit /etc/sysconfig/memcached with:

OPTIONS="-l ${HOSTIP}"

Problem ist, dass ich diese Datei nicht auf meinem Server habe, auf jeden Fall nicht an diesem Ort. Einige andere Artikel haben /etc/memcached.conf erwähnt, aber ich kann diese Datei auch nicht finden.

Kann ich die Datei /etc/sysconfig/memcached oder /etc/memcached.conf auf meinem Server nicht sicher erstellen? Ist es möglich, dass sich diese Dateien an einer anderen Stelle befinden, in welchem ​​Fall sollte ich suchen oder gibt es eine Möglichkeit, diese Informationen zu finden?

Schließlich würden alle Ressourcen, Tutorials oder Dokumentationslinks sehr geschätzt. Ich habe mich im Wiki der memcache-Site umgesehen und nur ein paar relevante Artikel für Anfänger gefunden.


1
Die Drupal-Anweisungen sind falsch. Die -lOption regelt, welche zwischengespeicherten Schnittstellen abhören, nicht welche Hosts bedient werden.
Wayne Conrad

Antworten:


17

Sie haben uns nichts über Ihr Betriebssystem / Ihre Distribution erzählt. Außerdem haben Sie uns nicht mitgeteilt, wie Sie memcached installiert haben.

Normalerweise erhalten Sie eine Beispielkonfigurationsdatei unter, /etc/wenn Sie memcached apt-getunter debian-basierten Systemen und / rpmoder yumunter redhat, fedora oder centos installieren.

Wenn Sie es aus dem Quellcode installiert haben, erhalten Sie möglicherweise keine Beispieldatei unter /etc/(ich habe memcached aus dem Quellcode selbst nicht installiert). Sie können jedoch nach einer Beispielkonfigurationsdatei im entpackten Quellordner suchen.

Auf jeden Fall können Sie locate memcached.confin Ihrem System nach einem suchen. Sie müssen dies sudo updatedbvorher tun , um den Suchcache zu aktualisieren.

Hier ist die Konfigurationsdatei von meinem System. Du kannst es benutzen:

# Run memcached as a daemon. This command is implied, and is not needed for the
# daemon to run. See the README.Debian that comes with this package for more
# information.
-d

# Log memcached's output to /var/log/memcached
logfile /var/log/memcached.log

# Be verbose
# -v

# Be even more verbose (print client commands as well)
# -vv

# 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 connection port is 11211
-p 11211
# Run the daemon as root. The start-memcached will default to running as root if no
# -u command is present in this config file
-u memcache

# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
-l 127.0.0.1

# Limit the number of simultaneous incoming connections. The daemon default is 1024
# -c 1024

# Lock down all paged memory. Consult with the README and homepage before you do this
# -k

# Return error when memory is exhausted (rather than removing items)
-M

# Maximize core file limit
# -r

Sie können dieselben Optionen auch über die Befehlszeile übergeben.


Debian GNU / Linux 5.0.9 (lenny) / memcached 1.4.10. Ich habe so viele Schritte durchlaufen, um Memcache zu installieren, dass ich mich nicht genau erinnern kann, wie ich es gemacht habe. Es wurde möglicherweise aus dem Quellcode kompiliert, da diese Konfigurationsdateien fehlen. Ich weiß mit Sicherheit, dass die PECL-Erweiterungen von der Quelle installiert wurden, einfach weil die Verwendung von PECL nicht funktioniert hat. Beim Betrachten des Quellordners konnte ich nicht sagen, was die Beispielkonfigurationsdatei sein würde ...
PatrickS

@PatrickS: Ich habe meine Antwort aktualisiert.
Khaled

Am Ende habe ich /etc/init.d/memcached mit den obigen Befehlszeilenoptionen erstellt, um memcache zu konfigurieren
PatrickS

11

Die Standardeinstellung (CentOS) / etc / sysconfig / memcached:

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

Das Init-Skript (CentOS) /etc/init.d/memcached:

...
if [ -f /etc/sysconfig/memcached ];then
        . /etc/sysconfig/memcached
fi
...

Wenn die Datei vorhanden ist, bedeutet dies, dass Sie sie als Quelle angeben (dh den Inhalt lesen und bewerten).

Soweit ich weiß, hat memcached keine Konfigurationsdatei. Es werden beispielsweise Befehlszeilenparameter verwendet (aus einem RHEL / CentOS-Init-Skript):

daemon --pidfile ${pidfile} memcached -d -p $PORT -u $USER  -m $CACHESIZE -c $MAXCONN -P ${pidfile} $OPTIONS

(Sie werden feststellen, dass die oben definierten Variablen hier verwendet werden).

Die Quintessenz lautet daher:

  • Überprüfen Sie Ihr Init-Skript - wenn es einen Abschnitt enthält, der dem oben beschriebenen ähnlich ist (die if-Anweisung), erstellen Sie auf jeden Fall die entsprechende Datei und platzieren Sie die entsprechenden Variablen darin.
  • Es gibt keine Konfigurationsdatei - erstellen Sie keine, da diese nicht verwendet wird.

3

Wenn Sie unter CentOS /etc/init.d/memcached nicht finden, versuchen Sie Folgendes:

nano /usr/lib/systemd/system/memcached.service

und ändern:

ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS

zu:

ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -I $MAXITEMSIZE -c $MAXCONN $OPTIONS

Nach dem Hinzufügen in / etc / sysconfig / memcached

MAXITEMSIZE="128m"

Starten Sie memcached neu

service memcached restart

Um zu überprüfen, ob ein Parameter hinzugefügt wurde, versuchen Sie:

ps aux | grep memcached
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.