Shop/CMS Performance bricht ein, was tun?

  • Hallo,
    ich habe hier einen vServer vCloud Basic 4K (4GB, 4GHZ CPU Leistung) und der Kunde einen Magentoshop.
    (Debian Squeeze 64Bit, Apache2 mit FGCI, MySQL 5)
    Der Shop ist recht kleine, es gitbt nur ca. 100 Artikel. Die üblichen Optimierungen haben wir schon gemacht und kommen auf sehr gute 1.5 Sekunden Auslieferzeit.


    Nun habe ich über loadimpact.com einen Lasttest gemacht und ab 50 gleichzeitgen Usern geht die zeit von den 1.5 Sekunden auf 3.5 Sekunden hoch.
    Immer noch OK, aber woran liegts? RAM ist noch ausreichend frei.
    Den MySQL habe ich testhalber schon einmal ausgelagert, aber das brachte wenig.
    Zuwenig CPU Leistung? Die Anzeige im top geht bis auf 2.0. Aber was bedeutet das in Prozent?


    Das gleiche "Problem" tritt auch bei Typo3 und WebSiteBaker (CMS) auf. Besonders WebSiteBaker ist sehr anspruchslos.
    Also müßte es meiner meinung mit dem Apache zu tun haben.


    1) Wie kann ich rausbekommen, was nun die Bremse ist? CPU, HDDs, Netzwerk, Apache, Magento.
    Am besten wäre natürlich ein Tool welches bei einem Lasttest alles aufzeichnet und danach analysieren kann.
    2) Gibt es Faustregeln für den Performancebedarf von Magento?
    10.000 Besucher pro Tag, bei 16 Stunden, sind 625 pro Stunde, sind 1250 in den besseren Stunden, bleiben 15 Minunten, sind 315 gleichzeitig, lesen die hälfte, sind also 150 gleichzeitige Zugriffe?
    = 8 CPU Kerne (XEON), 8GB
    3) Wieviel bringt ein getrennter MySQL Server?
    10% 25% 50%?
    Versteht mich nicht falsch. Ich suche nicht Jemanden der mein Problem lösts. Oder doch [Blockierte Grafik: http://www.magentocommerce.com/images/smileys/grin.gif
    Nur ein paar Tips in welche Richtung ich da gehen kann.
    Ich komme aus der Windows-Klickibunti-Server-Ecke und kenne mich mit Linux nicht so gut aus wie bei einem 2008R2.


    Danke


    Stefan

  • Hallo,
    danke Euch beiden.
    Ich verwende APC als Cache was auch viel bringt, aber der Knick bei 50 bleibt.


    Dieser Knick tritt auch bei einem ganz einfachem CMS auf wo RAM und CPU kein Problem darstellen.


    Ich vermute irgendwas mit MySQL, FCGI oder PHP.
    Im top ist mir aufgefallen, dass nur 6 Threads mit hoher Last laufen.


    Hast Du einen Überblick wegen der Request wo man was einstellen kann?


    Wie kann ich sehen wo es hängt?


    Danke


    Stefan

  • Hallo,
    ich habe die Werte mal erhöht, aber dann gehen die Anzahl von Request von 200 auf 60 runter.
    Noch Vorschläge?


    Ich messe hier phpmyadmin mit 500 Abfrage davon 10 gleichzeitig und komme auf ca. 200 Abfragen pro Sek (auf einem cloud 1k (1GB RAM, 1GHz CPU, Debian Squeeze 64Bit, Apache2, MySQL und phpmyadmin in Minimalverseion).
    Die gleiche Messung auf einem 2k (2GB, 2GHZ CPU), Debian Squeeze, Froxlor, Apache2 mit FCGI komme ich nur auf 60 Abfragen.


    Ich werde wohl oder übel mal am Wochendene eine Testreihe aufmachen um das Nachzuvollziehen.
    Ich denke nicht das es direkt an Froxlor liegt, aber vieleich im Vorbeilaufen. Mal schauen.


    Danke


    Stefan

  • Hi,
    gerade bei so perversen Anwendungen wie Magento ist doch Nginx bestimmt die richtige Wahl, nicht wahr?
    Wenn das irgendwie zu einem problemlosen Zusammenspiel gebracht werden kann.


    Nginx ist ja erst in jüngster Zeit, mit eben solchen modernen stark besuchten Anwendungen im Auge, entstanden.
    Die Erdenker von Apache hatten keinen Magento-Store mit 10.000 Besuchern/ Tag oder sowas wie Groupon auf dem Radar, denke ich mal.


    Wegen dem Auslagern des MySQL hab ich dich jetzt verstanden (Froxlor-Forum).
    Das ist der richtige Gedanke, den du verfolgst, um den Point-of-Failure nicht zu vermehren.
    Aber, wieso nicht ein Phpymadmin aufsetzen und dem Benutzer nur Betrachterrechte geben?
    So kann Dein Kunde die Datenbanken betrachten.

  • Moin,

    Aber, wieso nicht ein Phpymadmin aufsetzen und dem Benutzer nur Betrachterrechte geben?
    So kann Dein Kunde die Datenbanken betrachten.

    das würde natürlich auch gehen. Schöner wäre es natürlich wenn es im CP (Control Panel) alles zusammen wäre.
    Ich überlege auch ein anderes CP für diese Server zu verwenden welches dieses unterstützt.
    Bei Froxlor wird garantiert Jemand eine DB anlegen und dann jammern dass es so langsam ist.


    Ich habe gerade 2-3 Anfragen für das Hosting von Magento. 2x mit wenig Besuchern (100 Tag), 1x mit mittel (1500 Tag).
    Die ersten beiden könnte man ja noch auf einem Server laufen lassen der für Magento optimiert ist (APC und so weiter).
    Lieber wäre es natürlich wenn Jeder seinen eigenen vServer hätte. Aber die Installation von Froxlor mit allem was dazugehört dauert ja nun auch 2-3 Stunden.
    Getrennt davon der DB-Server.


    Also lande ich wieder bei der CP-Frage.
    Die Kommerziellen sind für jeweils einen Kunden zu teuer. Es sei denn ich miete einen Phsy.Server und mache selber vServer. Aber wenn die Kiste den Geist aufgiebt habe ich gar nichts mehr. Von den freien geht eigentlich nur ISPConfig 3 aber das ist sehr umständlich.
    Oder doch Webmin oder Usermin, aber die sehen auch nicht so schick aus.


    Stefan

  • Ich habe hier einen aktuellen Status vom Apache des Servers mit 4GB RAM während eines Lasttest mit ab auf phpmyadmin.


    Sieht eigentlich ganz normal aus, bis auf die Tatsache, dass es nur 30 Requests pro Sekunde sind.


    Apache Server Status for web.server06.domain.de


    Server Version: Apache/2.2.16 (Debian) mod_fcgid/2.3.6 mod_ssl/2.2.16 OpenSSL/0.9.8o
    Server Built: Sep 29 2011 20:59:05


    Current Time: Wednesday, 26-Oct-2011 10:29:52 CEST
    Restart Time: Wednesday, 26-Oct-2011 10:26:57 CEST
    Parent Server Generation: 0
    Server uptime: 2 minutes 54 seconds
    Total accesses: 5187 - Total Traffic: 38.9 MB
    CPU Usage: u1.79 s1.94 cu0 cs0 - 2.14% CPU load
    29.8 requests/sec - 229.2 kB/second - 7.7 kB/request
    11 requests currently being processed, 6 idle workers


    WWW__WWWW_.__WW_WW..............................................
    ................................................................
    ................................................................
    ................................................................


    Scoreboard Key:
    "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
    "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
    "C" Closing connection, "L" Logging, "G" Gracefully finishing,
    "I" Idle cleanup of worker, "." Open slot with no current process


    Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
    0-0 28556 0/244/315 W 0.18 0 0 0.0 1.87 2.42 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    1-0 29670 0/305/305 W 0.24 0 0 0.0 2.16 2.16 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    2-0 29672 0/307/307 W 0.22 0 0 0.0 2.37 2.37 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    3-0 29673 0/321/321 _ 0.24 0 137 0.0 2.45 2.45 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    4-0 29674 0/321/321 _ 0.24 0 337 0.0 2.47 2.47 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    5-0 31584 0/282/282 W 0.22 0 0 0.0 2.17 2.17 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    6-0 29427 0/238/309 W 0.18 0 0 0.0 1.83 2.36 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    7-0 20687 0/320/320 W 0.25 0 0 0.0 2.44 2.44 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    8-0 29428 0/207/271 W 0.15 0 0 0.0 1.59 2.08 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    9-0 22553 0/298/298 _ 0.24 0 168 0.0 2.25 2.25 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    10-0 - 0/0/197 . 0.09 41 485 0.0 0.00 1.52 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    11-0 30215 0/214/267 _ 0.16 0 571 0.0 1.63 2.03 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    12-0 23917 0/295/295 _ 0.23 0 191 0.0 2.24 2.24 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    13-0 23918 56/312/312 W 0.26 0 0 119.4 2.08 2.08 217.91.125.171 web.server06.domain.de GET /server-status HTTP/1.1
    14-0 23919 0/299/299 W 0.23 0 0 0.0 2.28 2.28 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    15-0 23920 0/311/311 _ 0.26 0 298 0.0 2.10 2.10 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    16-0 30216 0/225/225 W 0.17 0 0 0.0 1.72 1.72 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    17-0 30217 0/232/232 W 0.17 0 0 0.0 1.79 1.79 46.38.235.240 web.server06.domain.de GET /phpmyadmin/index.php HTTP/1.0
    Srv Child Server number - generation
    PID OS process ID
    Acc Number of accesses this connection / this child / this slot
    M Mode of operation
    CPU CPU usage, number of seconds
    SS Seconds since beginning of most recent request
    Req Milliseconds required to process most recent request
    Conn Kilobytes transferred this connection
    Child Megabytes transferred this child
    Slot Total megabytes transferred this slot
    mod_fcgid status:
    Total FastCGI processes: 11 Process: php-fcgi-starter (/var/www/php-fcgi-scripts/citizen/citizen.domain.de/php-fcgi-starter)
    Pid Active Idle Accesses State
    32588 62 62 1 Ready
    Process: php-fcgi-starter (/var/www/php-fcgi-scripts/web/web.server06.domain.de/php-fcgi-starter)
    Pid Active Idle Accesses State
    22591 149 0 471 Working
    18980 153 0 502 Working
    22586 149 0 491 Working
    22590 149 0 528 Working
    18982 153 0 536 Working
    22594 149 0 469 Working
    18979 153 0 513 Working
    22589 149 0 486 Working
    22592 149 0 513 Working
    23204 148 0 480 Working
    Active and Idle are time active and time since last request, in seconds.
    SSL/TLS Session Cache Status:
    cache type: SHMCB, shared memory: 512000 bytes, current sessions: 0
    subcaches: 32, indexes per subcache: 133
    index usage: 0%, cache usage: 0%
    total sessions stored since starting: 0
    total sessions expired since starting: 0
    total (pre-expiry) sessions scrolled out of the cache: 0
    total retrieves since starting: 0 hit, 0 miss
    total removes since starting: 0 hit, 0 miss
    Apache/2.2.16 (Debian) Server at web.server06.domain.de Port 80