Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

HowTo: Magento mit Nginx, Varnish, Apache, Memcache --> High Performance
 
brandeer
Sr. Member
 
Avatar
Total Posts:  133
Joined:  2009-03-18
switzerland
 

Hi,

Wir haben unseren Shop seit kurzem mit Nginx, Varnish, Apache, Memcache umgesetzt.

Nginx (Liefert http content von Varnish aus und https direkt von Apache)
Varnish (Cached die http Inhalte von Apache und liefert sie an den Nginx)
Apache (eigentliches Magento Setup mit PHP5.3, memcached, php5-apc)

Fazit:
Pageload DSL total: ~200ms (ohne externe Inhalte)
TTFB (time to first byte) bzw. index ~50ms (ohne Varnish 500ms)

Das Ganze lässt sich natürlich noch erweitern:
- DNS Round Robin
- Nginx Lastverteilung auf mehere Apache / Varnish
- Varnish Cluster

Für uns ist das aber derzeit mehr als genug grin

Ich hoffe das folgende howto hilft einigen von euch weiter…
Ergänzungen / Tipps sind natürlich willkommen..

Greets

 
Magento Community Magento Community
Magento Community
Magento Community
 
brandeer
Sr. Member
 
Avatar
Total Posts:  133
Joined:  2009-03-18
switzerland
 

Varnish

* Installation Varnish siehe Varnish-Cache.org

* Installation der Extension via Magento Connect http://connect20.magentocommerce.com/community/Varnish_Cache
* Konfiguration via Backend -> System -> Configuration -> System -> Page Cache powered by Varnish

Enable cache module - yes
Varnish servers - localhost oder auch externer Server
Server port - je nach Installation (default: 6083) - auf Port 80 anpassen
Disable caching - for Debug: Set a TTL of “0” for every request
‘Disable caching for routes checkout customer moneybookers paypal wishlist onestepcheckout
Disable caching vars ___store,___SID,currency,order
Default cache TTL - je nach Wunsch 14400 default (4h)
Cache TTL for routes - einzelne Routes länger / kürzer cachen
Purge category - bei Änderungen in der Kategorie purge Befehl an Varnish senden.
Purge product - bei Änderungen beim Produkt purge Befehl an Varnish senden.
Purge CMS page - bei Änderungen einer CMS Seite purge Befehl an Varnish senden.
Debug - X-headers werden beim Client angezeigt zum Debugen - wichtig hierbei im Firebug: X-Cache MISS / HIT, Age 0, Via 1.1 varnish

Konfiguration Varnish

* Wichtig: README_VARNISH_CACHE.txt im jeweiligen Webroot
* /etc/default/varnish:

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -p thread_pool_add_delay=2 \
             -p thread_pools=4\
             -p thread_pool_min=200 \
             -p thread_pool_max=4000 \
             -p session_linger=50 \
             -p sess_workspace=262144 \
             -s malloc,3G"

* thread_pools = Anzahl CPU Cores
* thread_pool_min = 800 / CPU Cores
* session_linger = durchschnittliche Ladezeit sofern Varnish Cached
* malloc, 3G = 3GB RAM verwenden für Varnish (immer 20% weniger als Server Limit)

* VCL von Phoenix verwenden und anpassen: app/code/community/Phoenix/VarnishCache/etc/default_3.0.vcl (ablegen unter /etc/varnish/default.vcl)
* Anpassen der untenstehenden Daten & sub vcl_error auskommentieren

# Daten vom Quellserver (Apache oder Nginx)
backend default {
  
.host "localhost";
  .
port "8080";
}

# Magento vom Quellserver darf purge Befehle senden:
acl purge {
  
"localhost";
  
"127.0.0.1";
}
 
Magento Community Magento Community
Magento Community
Magento Community
 
brandeer
Sr. Member
 
Avatar
Total Posts:  133
Joined:  2009-03-18
switzerland
 

Das Ganze wirkt sich übrigens wie folgt auf die Serverperformance aus:

Google Webmaster:

Im Durchschnitt benötigen Seiten auf Ihrer Website 0,7 Sekunden zum Laden (aktualisiert am 14.05.2012). Dies ist schneller als 96 % der Websites.

 
Magento Community Magento Community
Magento Community
Magento Community
 
peterschen
Jr. Member
 
Total Posts:  9
Joined:  2008-12-16
 

Hi brandeer,

dein Setup sieht also so aus: nginx > Varnish > Apache?

Ich würde gerne verstehen, warum du dieses Setup gewählt hast. Man könnte auch Varnish vorn reinschalten und nginx alles machen lassen und den Apache komplett aus dem Setup rausziehen - aber vielleicht weißt du etwas, was ich nicht weiß smile

Danke & Grüße
Christoph

 
Magento Community Magento Community
Magento Community
Magento Community
 
brandeer
Sr. Member
 
Avatar
Total Posts:  133
Joined:  2009-03-18
switzerland
 
peterschen - 30 October 2012 03:35 AM

Hi brandeer,

dein Setup sieht also so aus: nginx > Varnish > Apache?

Ich würde gerne verstehen, warum du dieses Setup gewählt hast. Man könnte auch Varnish vorn reinschalten und nginx alles machen lassen und den Apache komplett aus dem Setup rausziehen - aber vielleicht weißt du etwas, was ich nicht weiß smile

Danke & Grüße
Christoph

Hi Christoph

nein, das Ganze ist historisch so entstanden.

Grundsätzlich würde ich auch empfehlen Varnish auf Port 80 laufen zu lassen und den Apachen wegzulassen.
Nginx auf Port 8080 für das normale Frontend und Port 443 für SSL.

Grüsse,
Kevin

 
Magento Community Magento Community
Magento Community
Magento Community
 
peterschen
Jr. Member
 
Total Posts:  9
Joined:  2008-12-16
 

Danke für die Info. Wollte nur sicherstellen, dass ich mich hier nicht irgendwo verrenne smile

Noch eine weitere Frage: Hast du dein Setup auf mehrere Server verteilt und deshalb memcached am Start?

Danke & Grüße
Christoph

 
Magento Community Magento Community
Magento Community
Magento Community
 
brandeer
Sr. Member
 
Avatar
Total Posts:  133
Joined:  2009-03-18
switzerland
 
peterschen - 31 October 2012 01:10 AM

Danke für die Info. Wollte nur sicherstellen, dass ich mich hier nicht irgendwo verrenne smile

Noch eine weitere Frage: Hast du dein Setup auf mehrere Server verteilt und deshalb memcached am Start?

Danke & Grüße
Christoph

Nein, eigentlich nur um den Magento Cache zu beschleunigen - aber für die Verteilung wäre es natürlich auch eine ideale Variante wink

 
Magento Community Magento Community
Magento Community
Magento Community
 
peterschen
Jr. Member
 
Total Posts:  9
Joined:  2008-12-16
 

Okay, für lokale Systeme “reicht” auch APC oder XCache, da die die Variablen auch in den Speicher laden und im Zweifel sogar schneller sind als memcached, da memcached wieder eine Verbindung zum memcached aufbauen muss um seine Variablen wegzuschreiben.

So zumindest die Theorie aber selber bewiesen in Performance Tests habe ich das noch nicht…

 
Magento Community Magento Community
Magento Community
Magento Community
 
brandeer
Sr. Member
 
Avatar
Total Posts:  133
Joined:  2009-03-18
switzerland
 

jap, mit APC oder XCache solltest du da mind. genau so gut fahren - für mich war\\\’s dazumals einfach experimental und spannend mal auszuprobieren grin

 
Magento Community Magento Community
Magento Community
Magento Community
 
miguel sommer
Jr. Member
 
Total Posts:  9
Joined:  2010-07-28
 

Hallo zusammen,

wir haben einen Magento Multistore im Sportbereich und haben seid zwei Wochen Varnish installiert. Nun haben wir zwei Probleme und ich hoffe, dass jemand weiterhelfen kann.

1. Problem: Sobald der Kunde ein Produkt in den Warenkorb legt, funktioniert der Varnish nicht mehr und die Seite ist genau so langsam wir ohne Varnish!

2. Problem: Der Kategoriepfad wird in der Produktansicht nicht angezeigt. Sobald ich in ein Produkt gehe, lautet der Pfad “Startseite > Produktname”. Eigentlich sollte der Pfad ja hier wie folgt aussehen “Startseite > Kategorie > Produktname”...Dadurch haben wir auch ein Problem mit unserer Funktion unterhalb des breadcrump über die der Kunde einn Produkt weiter, eins zurück und zurück zur Kategorie gelangen kann. Zurück zur Kategorie wird bei aktivem Varnish garnicht mehr angezeigt und weiter und zurück funktioniert nicht korrekt.

Unsere Shops erreicht Ihr unter www.mitaso-wintersports.de

Hat irgendjemand eine Idee woran das liegen könnte???? Ich wäre dankbar um jeden Anhaltspunkt

Lg

 
Magento Community Magento Community
Magento Community
Magento Community
 
brandeer
Sr. Member
 
Avatar
Total Posts:  133
Joined:  2009-03-18
switzerland
 

1) Ja, dies ist völlig korrekt. Sobald der Warenkorb aufgerufen wurde, wird beim User ein Cookie gesetzt und die Webseite vom Varnish nicht mehr gecached.

Ursache: die Extension kann derzeit keine dynamischen Inhalte korrekt ausgeben (wie z.b. Mein Warenkorb (2 Artikel) )
Dazu sind ESI nötig - dies wird derzeit noch nicht supported und kommt soweit ich weiss auch nur in der Enterprise Version der Extension.

Darum empfehle ich (siehe oben) auch Optimierungen am Shop selber in Form von APC Cache, memcached usw

2) das handling bei den Breadcrumbs kann ich mir derzeit nicht erklären - benutzt ihr das Core Verhalten oder ist das Ganze modified?
ohne Varnish funktioniert es korrekt?

 
Magento Community Magento Community
Magento Community
Magento Community
 
miguel sommer
Jr. Member
 
Total Posts:  9
Joined:  2010-07-28
 

Vielen Dank für die rasche Antwort!!!

1) Aktulle haben wir auch bereits einen APC Cache laufen und dachten eigentlich man solle entweder APC oder memcached installieren...Wenn ich dich jetzt richtig verstehe, dann wäre es auch sinnvoll beide Caches zu installieren?

2) ja...ohne Varnish funktioniert der breadcrumb! Soweit ich weiß, ist der breadcrump und auch die previous next Funktion eine extension also kein core verhalten mehr!

Kann man das was machen?

Lg und nochmals besten Dank

 
Magento Community Magento Community
Magento Community
Magento Community
 
jumpthis
Member
 
Total Posts:  75
Joined:  2010-09-30
 

Hi,

ich habe eine Frage zu Varnish in Verbindung mit dem Apache, ngnix und APC.

Soweit funktioniert das Caching mit Varnish, aber er verliert für andere Browser das Caching wieder. Wenn ich im Firefox einige Seiten durchklicke und dann z.B. im Chrome die Seiten erneut öffne muss erst der Cache wieder aufgebaut werden. Erst beim zweiten Aufruf der Seite ist es dann wieder richtig schnell.

Ich nutze die default vcl aus der Magento Extension von Phoenix.

@brandeer
Ich habe mir das in deinem Shop angeschaut und hier wird bei mir direkt gecached, so wie es eigenlich ja sein soll.

Kannst du dir vorstellen voran das liegen könnte? Hast du selbst solch eine Erfahrung machen können?

Grüße

 
Magento Community Magento Community
Magento Community
Magento Community
 
Kirladu
Jr. Member
 
Total Posts:  12
Joined:  2008-12-03
 

Moin,
wir haben seit Kurzem auch Varnish mit der Magento Extension im Einsatz, läuft auch alles recht flott nun, seither tritt aber ein ernsthaftes und schwer nachvollziehbares Verhalten auf.

1. Unabhängig ob Gast oder registrierter Kunde
2. Unabhängig von der Zahlungsart
3. Nicht zuverlässig wiederholbar

In der Statistiksoftware konnte ich häufig Besucher und Fast-Kunden zwischen Warenkorb und Checkout hin- und herwechseln sehen. Ist ja oftmals kein unübliches Verhalten, aber das war dann schon zu auffällig oft.

Heute konnte ich eine Kundin, die sich soeben registriert hatte, am Telefon erreichen und danach das Fehlverhalten selbst herbeiführen - jedoch danach nicht mehr zuverlässig wiederholen.

Problem:
Bei Klick auf KAUFEN benötigt der Prozess außergewöhnlich lang. Danach wird erneut der KAUFEN-Button eingeblendet. Anschließend wird man wieder in den Warenkorb zurückgeleitet.

Allerdings wurde zuvor der Warenbestand reduziert (!), was zum nächsten Problem führt: Nach dem fehlgeschlagenen Kauf sind möglicherweise nicht mehr alle gewünschten Waren verfügbar.

Alles in allem ein ziemlich katastrophales, scheinbar recht beliebiges Verhalten… vor Weihnachten steigt da der Blutdruck!

Wir haben weiterhin bunt gemischte (Zahlungsarten / Versandarten / ...) Bestellungen, aber immer wieder hackt\’s irgendwo im Getriebe.

Die Deaktiverung des Caches für bestimmte Routen ist standardmäßig eingestellt:

checkout
customer
moneybookers
paypal
wishlist

In system.log oder exception.log ist zu diesem Zeitpunkt nichts spezielles auszumachen.

Kommt irgendwas davon wem bekannt vor? Konnte wer ähnliche Beobachtungen machen?

Thx!

 
Magento Community Magento Community
Magento Community
Magento Community
 
brandeer
Sr. Member
 
Avatar
Total Posts:  133
Joined:  2009-03-18
switzerland
 
Kirladu - 03 December 2012 09:17 AM

Moin,
wir haben seit Kurzem auch Varnish mit der Magento Extension im Einsatz, läuft auch alles recht flott nun, seither tritt aber ein ernsthaftes und schwer nachvollziehbares Verhalten auf.

1. Unabhängig ob Gast oder registrierter Kunde
2. Unabhängig von der Zahlungsart
3. Nicht zuverlässig wiederholbar

In der Statistiksoftware konnte ich häufig Besucher und Fast-Kunden zwischen Warenkorb und Checkout hin- und herwechseln sehen. Ist ja oftmals kein unübliches Verhalten, aber das war dann schon zu auffällig oft.

Heute konnte ich eine Kundin, die sich soeben registriert hatte, am Telefon erreichen und danach das Fehlverhalten selbst herbeiführen - jedoch danach nicht mehr zuverlässig wiederholen.

Problem:
Bei Klick auf KAUFEN benötigt der Prozess außergewöhnlich lang. Danach wird erneut der KAUFEN-Button eingeblendet. Anschließend wird man wieder in den Warenkorb zurückgeleitet.

Allerdings wurde zuvor der Warenbestand reduziert (!), was zum nächsten Problem führt: Nach dem fehlgeschlagenen Kauf sind möglicherweise nicht mehr alle gewünschten Waren verfügbar.

Alles in allem ein ziemlich katastrophales, scheinbar recht beliebiges Verhalten… vor Weihnachten steigt da der Blutdruck!

Wir haben weiterhin bunt gemischte (Zahlungsarten / Versandarten / ...) Bestellungen, aber immer wieder hackt\’s irgendwo im Getriebe.

Die Deaktiverung des Caches für bestimmte Routen ist standardmäßig eingestellt:

checkout
customer
moneybookers
paypal
wishlist

In system.log oder exception.log ist zu diesem Zeitpunkt nichts spezielles auszumachen.

Kommt irgendwas davon wem bekannt vor? Konnte wer ähnliche Beobachtungen machen?

Thx!

das klingt stark nach dem php max_execution timeout - schon mal die php logs gecheckt?

ansonsten deaktiviere mal die module:  rss feeds und downloadable products (system -> confg. -> advanced)

diese benötigen relativ viel performance

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top