TYPO3 4.7.12 - Performance-Frage

  • Mopps Mopps
    Jedi-Ratsmitglied
    0 x
    867 Beiträge
    0 Hilfreiche Beiträge
    06. 06. 2013, 08:48

    Hallo,

    wir arbeiten gerade auf einem Relaunch. Dabei ist uns aufgefallen, dass die Seiten extrem langsam laden. Einige Sekunden passiert irgendwie erst mal gar nichts. Bis die gesamte Seite geladen wurde vergehen durchschnittlich 10-12 Sekunden. Die Seiten sind sicher nicht gerade schlank, aber 10-12 Sekunden kann nicht sein. Wenn ich mir die Rendering-Time von TYPO3 ausgeben lasse, dann steht da 1-3 Sekunden. Die weitere Analyse ergab folgendes:

    [img]http://s14.directupload.net/images/130606/xxm9yhvf.png[/img]

    Hat jemand eine Ahnung, warum die Queries so viel Zeit brauchen? Das sind ja Sachen vom Core. Hat jemand Erfahrung oder Tipps, wie wir weiter vorgehen können, um die Ursache dafür zu finden?

    Edit: habe noch vergessen zu erwähnen, dass ich bereits mal so gut wie alle Extensions deaktiviert hatte, um zu schauen, ob es an einer Ext liegen kann. Jedoch ohne Veränderung. Bin noch auf diesen Post gestoßen, der ähnliches Problem hat.
    [url=http://lists.typo3.org/pipermail/typo3-german/2011-December/082130.html]4.6 Caching/Performance[/url]

    Danke


  • 1
  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    06. 06. 2013, 10:45

    Die spannende Frage ist ja warum im Frontendrendering so viele write Queries gemacht werden, 41 INSERT + 35 INSERTmultiple
    da würde ich mal nachforschen. Inserts kosten immer viel Zeit weil sie nicht nur die Datenbank zwingen auf die Harddisc zuzugreifen sondern auch Tabellen locken könnnen wodurch dann wieder SELECTs warten müssen. Also idealerweise sollten überhaupt keine write Queries vorkommen. Das könnten eventuell Cacheeinträge sein, aber dann müsste es beim nächsten Aufruf schneller sein.
    Wenn die Seite durchschnittlich 10-12 Sekunden braucht dann scheint aber auch einiges an Resourcen (CSS, JS, Images) geladen zu werden, da müsste man dann natürlich auch noch dran arbeiten.

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!

  • Mopps Mopps
    Jedi-Ratsmitglied
    0 x
    867 Beiträge
    0 Hilfreiche Beiträge
    06. 06. 2013, 13:22

    Danke. Was du bzgl. der Anzahl der requests ansprichst (CSS, Images, ...) werden wir das noch optimieren. Was die Queries betrifft handelt es sich tatsächlich hauptsächlich um Cache-Sachen. Bei den Tests, die wir gemacht haben, wurde vorher der Cache geleert. Mit ist klar, dass es dann länger dauert, aber manche Inserts benötigen über 2 Sekunden (wir hatten schon mal über 4 Sekunden). Das kann doch nicht sein. Hier mal 2 Queries, die recht lange gebraucht haben:

    [img]http://s14.directupload.net/images/130606/jxw3bsqi.png[/img]

    Es gibt Insert-Anweisungen, die viel komplexer sind, als die und nur 2stellige ms-Werte dauern.

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    07. 06. 2013, 17:38

    Ich denke das Problem ist nicht die Komplexität sondern die Table Locks. Benutzt ihr als engine für die Cache Tabellen MyISAM oder InnoDB?

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!

  • Mopps Mopps
    Jedi-Ratsmitglied
    0 x
    867 Beiträge
    0 Hilfreiche Beiträge
    11. 06. 2013, 08:24

    2 Fragen:
    [quote="kitsunet"]
    Ich denke das Problem ist nicht die Komplexität sondern die Table Locks.
    [/quote]
    Was sind Table Locks?

    [quote="kitsunet"]
    Benutzt ihr als engine für die Cache Tabellen MyISAM oder InnoDB?
    [/quote]
    Wie kann ich das herausfinden?

  • Chrissli Chrissli
    Jedi-General
    0 x
    1016 Beiträge
    28 Hilfreiche Beiträge
    11. 06. 2013, 08:50

    [quote="Mopps"]
    Was sind Table Locks?
    [/quote]
    Table locks sind wie der Name schon sagt "Schlösser" für Tabellen, d.h. die Tabelle wird z.b. vor dem Insert per lock gesperrt, damit andere Prozesse nicht auf diese Zugreifen können. So wird verhindert, dass falsche oder unvollständige Daten geladen werden. Zudem wird die Performance bei umfangreichen Inserts erhöht, z.b. wenn du einen Datenbankdump zurückspielst.
    Allerdings werden während dessen alle anderen Zugriffe auf diese Tabelle gesperrt, so dass z.B. der Aufbau einer Webseite die auf diese Tabelle zugreifen muss solange ausgebremst wird.

    Wie kann ich das herausfinden?

    Am einfachsten indem du in phpMyAdmin die Tabelle auswählst und auf den Reiter "Operationen" wechselst. Hier sollte die entspechende Engine für diese Tabelle angezeigt werden.

    God's in his heaven, all's right with the world

  • Mopps Mopps
    Jedi-Ratsmitglied
    0 x
    867 Beiträge
    0 Hilfreiche Beiträge
    11. 06. 2013, 09:39

    danke.

    Bei der Tabelle cf_cache_hash steht InnoDB.

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    11. 06. 2013, 16:41

    InnoDB ist auf jeden Fall schon die bessere Wahl... Dann wird es jetzt im Detail schwierig. Eigentlich müsste man jetzt ein detailiertes Performance Profiling machen um zu sehen was schief läuft. Die Cache Queries mögen zwar die längsten sein aber sind nur Symptom nicht Ursache.

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!

  • 1