Varnish schwächelt (nicht)?

Apache, Lighttpd, nginx, Cherokee
dante
Posts: 128
Joined: 2010-04-20 12:50

Varnish schwächelt (nicht)?

Post by dante » 2012-03-05 17:41

Hi zusammen,

ich experimentiere gerade ein wenig an einer neuen Infrastruktur für einen E-Commerce Auftritt.

Auf einem physischen Webserver mit 2 Quadcore Xeons und 4GB RAM läuft Apache 2.2 als Webserver und eine vermutlich unbekannte Shopapplikation die leider sehr alt ist und leider PHP 5.2 braucht :?

Testweise habe ich Varnish (aktuelles Stable) vor den Apache geschaltet und ihm 1GB RAM zum Cachen gegegen.

Obwohl Varnish gefühlte 80% aller Anfragen aus dem Cache (Vergleich varnishlog -b / -c) beantwortet, ist die Performance kein bisschen besser, teilweiser eher bis zu 100ms langsamer.

Betreibt jemand Varnish direkt auf dem Webserver? Wie sind eure Erfahrungen? Gibt es Alternativen?

Ich persönlich habe auch den Verdacht, dass die Applikation nicht mehr hergibt.

Gruß
dante
ZWNobyAiSGVsbCB5ZWFoLCBiYXNlNjQiIHwgYmFzZTY0ClNHVnNiQ0I1WldGb0xDQmlZWE5sTmpRSw==

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Varnish schwächelt (nicht)?

Post by Joe User » 2012-03-06 02:24

Unabhängig von Varnisch:

Braucht die Shopsoftware (Welche?) wirklich PHP-5.2, oder läuft sie doch unter PHP-5.3/5.4 und ist nur nicht offiziell damit getestet?

Hast Du Apache schon optimiert? Besteht die Möglichkeit Apache-2.4 zu verwenden?

Ist die Datenbank (MySQL? Version?) bereits optimiert? Läuft die Datenbank auf eigener Hardware oder auf dem Webseerver?

Hast Du einen PHP-Entwickler, der sich um die Optimierung des Source kümmert?
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

dante
Posts: 128
Joined: 2010-04-20 12:50

Re: Varnish schwächelt (nicht)?

Post by dante » 2012-03-06 13:17

Shopversion läuft leider wirklich nur unter PHP 5.2. Einen Entwickler haben wir, der ist aber so ausgelastet, dass eine Code-Optimierung rausfällt (für die Zukunft werden wir wohl die Software austauschen, das kann aber auch noch ein Jahr dauern).

Apache und MySQL sind für den Produktivbetrieb noch default, deren Optimierung will ich bis Juli abgeschlossen haben und dann von Staging nach Produktiv übernehmen. Dort inbegriffen sind sowohl die Configs als auch neuere Versionen, die nicht aus den Disro-Repos kommen.

Die DB an sich läuft auf einem Hardware-Cluster (2 Knoten, simples Pacemaker/Corosync/DRBD Setting).

Meine Intention war es, mit den Default-Configs zu testen um (auch gegenüber der Geschäftsleitung) einen Vergleich zu haben zwischen Default<->Nach Optimierung. Vielleicht ist das auch der falsche Ansatz :-?
ZWNobyAiSGVsbCB5ZWFoLCBiYXNlNjQiIHwgYmFzZTY0ClNHVnNiQ0I1WldGb0xDQmlZWE5sTmpRSw==

ddm3ve
Moderator
Moderator
Posts: 1142
Joined: 2011-07-04 10:56

Re: Varnish schwächelt (nicht)?

Post by ddm3ve » 2012-03-06 13:45

BTW: aus eigener Erfahrung.
Wenn irgendeine chance besteht ein anderes DBMS zu nutzen z.B. PostgreSql.
Dann lass die Finger von drbd und corosync und führe die Replikation über die Bordmittel einer "vernünftigen" Datenbank durch.

Leider eignet sich die mysql Replikation nur zum teil.

Mit drbd wiederum bremst Du die Datenbank auf schreibend max. 100MB/Sekunde (Sofern es sich um eine GBit Interface handelt und die Latenzen gering sind.)

Ich kann zwar den Wunsch nach DRBD und cluster verstehen, dies lässt sich aber mit Postgresql anders und besser lösen bei deutlich weniger Problemen.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.

dante
Posts: 128
Joined: 2010-04-20 12:50

Re: Varnish schwächelt (nicht)?

Post by dante » 2012-03-06 16:37

Zu PostgreSQL:

Ich habe mir das eben mal angeschaut, scheinbar unterstützt Magento (wird wohl unsere spätere Shopapplikation) PostgreSQL nicht von Haus aus. Daher fällt das leider raus.

Das Interface für die DRBD Replikation läuft über ein dediziertes VLAN, dort erreiche ich zwar fast Gigabit Speed (~941MBit/s laut iperf), aber wenn ich vielleicht mal SSDs ins Budget kriege, wärs blöd :)

Ich muss also wohl oder übel bei MySQL bleiben.
ZWNobyAiSGVsbCB5ZWFoLCBiYXNlNjQiIHwgYmFzZTY0ClNHVnNiQ0I1WldGb0xDQmlZWE5sTmpRSw==

ddm3ve
Moderator
Moderator
Posts: 1142
Joined: 2011-07-04 10:56

Re: Varnish schwächelt (nicht)?

Post by ddm3ve » 2012-03-06 16:47

Ich spreche von 100Mbyte
Das schafft auch eine halbwegs schnelle Platte.

Ist ein Raid10 aus mehrere Platten, wirds schneller.
Problem sind u.a. aber auch die Latenzen. Diese wirken sich nicht unerheblich auf die IOps aus. Das kann durchaus zum Bottleneck führen und u.U. eine Blockade am Storage verursachen.
Eine Replikation (z.B. PostgreSql) hingegen hat hier keine Auswirkung auf schreibende Last / Durchsatz, wenn das Replikationsnetz temporär zum Engpass wird.

Eine Crossoververbindung wird vo Linbit an der Stelle auch empfohlen.
Es gibt aber auch eigene physische Interfaces womit der TCP Overhead weg fällt.

Bei magento muss man ein wenig in die Trickiste greifen, was die optimierung betrifft.
Durch den key value Store würde die Datenbank schon mal durch einen Querycache profitieren.

Auf dem appserver solltest Du Dir ggf. Gedanken zu apc machen.
Das erfordert jedoch auch einige Code Änderungen um apc richtig effektiv zu nutzen.

In meinem fall habe ich den vorgelagerten Proxy über Apache mod_proxy realisiert. Die Antwortzeiten liegen bei rund 400ms.
Der Traffic zwischen Proxy und Appserver/ Webserver reduziert sich bei hoher Last ca. um 2/3.
Last edited by ddm3ve on 2012-03-06 16:58, edited 2 times in total.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.