Leitfaden: nginx direkt aus memcached lesen lassen

Leitfaden: nginx direkt aus memcached lesen lassen

Die Performance moderner Webanwendungen hängt stark davon ab, wie viele Anfragen über PHP und Datenbanken wie MySQL verarbeitet werden müssen. Jeder Seitenaufruf, der über den kompletten Stack läuft, kostet Rechenzeit und kann bei hohem Traffic zum Flaschenhals werden.

Hier kommt Caching ins Spiel - und insbesondere memcached, ein In-Memory-Key-Value-Store, der Daten sehr schnell aus dem Arbeitsspeicher bereitstellt. Wenn eine Webanwendung ganze fertige Seiten in memcached ablegt, kann nginx diese direkt von dort ausliefern - ganz ohne den Umweg über PHP und MySQL. Das bedeutet:

  • deutlich geringere Serverlast
  • wesentlich kürzere Antwortzeiten
  • bessere Skalierbarkeit bei hoher Last

Wichtig ist dabei: nginx und die Webanwendung müssen denselben Key verwenden, um die gecachten Inhalte wiederzufinden. Typischerweise bietet sich $host$request_uri als eindeutiger Schlüssel an.

Im Folgenden zeigen wir Ihnen Schritt für Schritt, wie Sie nginx für den Zugriff auf memcached konfigurieren.

1. Konfiguration in nginx

In Ihrem nginx-Vhost können Sie die folgende Konfiguration ergänzen:

location ~ \.php$ {
    set $no_cache "";
    if ($query_string ~ ".+") {
        set $no_cache "1";
    }
    if ($request_method !~ ^(GET|HEAD)$ ) {
        set $no_cache "1";
    }
    if ($request_uri ~ "nocache") {
        set $no_cache "1";
    }
    if ($no_cache = "1") {
        return 405;
    }

    set $memcached_key $host$request_uri;
    memcached_pass     127.0.0.1:11211;
    default_type text/html;
    error_page 404 405 502 = @php;
    expires epoch;
}

2. Fallback auf PHP

Falls eine Seite nicht im Cache liegt oder das Laden aus memcached fehlschlägt, soll nginx automatisch auf PHP zurückfallen. Dazu richten Sie einen internen Block @php ein:

location @php {
    try_files $uri =404;
    include /etc/nginx/fastcgi_params;
    fastcgi_pass unix:/var/lib/php5-fpm/web1.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    fastcgi_intercept_errors on;
}

3. Einheitliche Keys verwenden

Damit das Ganze funktioniert, muss Ihre Webanwendung die Seiten mit denselben Keys in memcached speichert, die nginx verwendet.

Im obigen Beispiel lautet der Key:

$host$request_uri

Wenn die Anwendung andere Keys nutzt, kann nginx die Inhalte nicht finden.

4. Speichergröße für memcached anpassen

Damit genug Platz für die gecachten Seiten vorhanden ist, sollten Sie memcached genügend Arbeitsspeicher zuweisen. Das geschieht in der Konfigurationsdatei:

vi /etc/memcached.conf

Beispiel:

# Standardgröße anpassen
-m 512

Damit stehen 512 MB RAM für memcached zur Verfügung. Passen Sie diesen Wert je nach Anforderungen an.

5. Vorteile im Überblick

  • Umgeht den kompletten PHP/MySQL-Stack bei Cache-Hits
  • Extrem schnelle Auslieferung von Inhalten direkt aus dem Arbeitsspeicher
  • Reduzierte Serverlast bei hohem Traffic
  • Nahtloser Fallback auf PHP, falls Inhalte nicht im Cache liegen

 

Geschafft! Mit dieser Konfiguration nutzen Sie nginx als extrem performanten Frontend-Cache direkt aus memcached!

Finden Sie den passenden Tarif

Unser Tarifberater hilft Ihnen dabei, das passende Paket zu finden. Bei Fragen berät Sie unser Sales-Team sehr gerne unter +49 (0) 4131 / 22 78 1-25 oder sales@timmehosting.de.

Bitte beachten Sie: Der Tarifberater dient nur der groben Orientierung. Ihr tatsächlicher Bedarf kann durch den Ressourcenbedarf Ihrer Anwendung(en), tageszeitabhängige/saisonale/aktionsbedingte Schwankungen des Besucheraufkommens, geplantes Wachstum und weitere Faktoren von der Empfehlung abweichen.

  • 1
  • 2
  • 3
  • 4
  • 5

Was möchten Sie hosten?

Möchten Sie einen oder mehrere Shops hosten? (Eine Multishop-Installation gilt als ein Shop.)

Möchten Sie eine oder mehrere Websites hosten? (Eine Multisite-Installation gilt als eine Website.)

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Web Hosting

Zu den ScaleServer Paketen Zu den Web Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Shop Hosting

Zu den ScaleServer Paketen Zu den Shop Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed vServer oder ScaleServer

Zu den Managed vServer Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed Server oder ScaleServer

Zu den Managed Server Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen unsere

Managed Server

Zu den Managed Server Paketen