Seiten werden langsam geladen

8

Ich bin derzeit mit einem langsamen Laden der Seite konfrontiert, wobei die Kaufabwicklung die langsamste von allen ist mit :

  • 28 Anfragen
  • 18,5 KB übertragen (Rest von Festplatte oder Speicher zwischengespeichert)
  • Ende: 15.24s (Lader verschwindet und der Benutzer kann etwas tun)
  • DOMContentLoaded: 6.45s
  • Belastung: 10,28 s

Das Laden der Kasse / des Warenkorbs endet mit:

  • 29 Anfragen
  • 28,5 KB übertragen (Rest von Festplatte oder Speicher zwischengespeichert)
  • Ende: 6,35 s
  • DOMContentLoaded: 1.9s
  • Belastung: 3,79 s

während ein leerer Wagen dies hat:

  • 22 Anfragen
  • 8,2 KB übertragen (Rest von Festplatte oder Speicher zwischengespeichert)
  • Ende: 2,78s
  • DOMContentLoaded: 1.22s
  • Belastung: 2,65 s

Ich verwende Redis zum Zwischenspeichern und alle Caches sind aktiv. Javascript wird minimiert, zusammengeführt und gebündelt sowie CSS und HTML. Der Server ist mit 8 CPUs, 16 GB RAM und einer SSD ziemlich gut gelegen. Die Last usw. ist niemals hoch genug, um überhaupt erwähnt zu werden. Grundsätzlich schläft der Server ...

Es gibt nur ~ 80 Produkte und ein Geschäft. Wir verwenden den Inhaltsteil von Magento nicht. Nur Produktdetailseiten, Kasse und Kundenbereich (sowie das Backend) werden von Magento bereitgestellt. Vor Magento befindet sich ein CMS-System, das Seiten in weniger als einer Sekunde einschließlich Medien bereitstellt.

Ich sehe, dass TTFB für das Checkout-Dokument bereits 5,66 Sekunden beträgt. Wenn der Magento-Profiler aktiviert ist, kann ich feststellen, dass dies magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_bodydie meiste Zeit verursacht. Obwohl es ziemlich unklar ist, was genau es verursacht. Hier kann der Profiler nicht viel helfen (zumindest ich).

magento->routers_match                                                                                                                                                                                                                                                                                            5.347600 5.347600 1  42,063,304 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index                                                                                                                                                                                                                                                    5.143997 5.143997 1  15,976,176 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body                                                                                                                                                                                                                                       5.143980 5.143980 1  15,975,304 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->EVENT:checkout_allow_guest                                                                                                                                                                                                           0.000609 0.000609 1  82.464     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->EVENT:checkout_allow_guest->OBSERVER:checkout_allow_guest                                                                                                                                                                            0.000592 0.000592 1  80.944     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT                                                                                                                                                                                                                               0.106220 0.035407 3  13,085,544 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_load                                                                                                                                                                                                                  0.000666 0.000666 1  136.56     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_xml                                                                                                                                                                                                          0.005658 0.005658 1  174.632    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks                                                                                                                                                                                                       0.099472 0.099472 1  12,755,648 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements                                                                                                                       0.099462 0.099462 1  12,902,296 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements                                                                                                    0.091426 0.091426 1  11,885,184 10,485,760
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->EVENT:core_layout_block_create_after                                                              0.000169 0.000003 51 -16.128    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements                    0.000609 0.000609 1  52.76      0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->layout_generate_blocks->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements->Magento\Framework\View\Layout::Magento\Framework\View\Layout::generateElements->generate_elements 0.000455 0.000455 1  26.952     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->EVENT:layout_generate_blocks_after                                                                                                                                                                                           0.000297 0.000297 1  16.32      0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->LAYOUT->EVENT:layout_generate_blocks_after->OBSERVER:persistent                                                                                                                                                                      0.000279 0.000279 1  14.776     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch                                                                                                                                                                                                                         0.002972 0.002972 1  116.752    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch                                                                                                                                                                                   0.002913 0.002913 1  110.192    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor                                                                                                                                                        0.002900 0.002900 1  108.656    0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags                                                                                                                             0.001175 0.001175 1  77.784     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags->OBSERVER:invalidate_varnish                                                                                                0.000516 0.000516 1  35.056     0         
magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_body->postdispatch->EVENT:controller_action_postdispatch->OBSERVER:customer_visitor->EVENT:clean_cache_by_tags->OBSERVER:invalidate_builtin                                                                                                0.000629 0.000629 1  41.08      0

Ich habe auch den Datenbankprofiler aktiviert, aber keine Abfrage dauert länger als 1 ms, obwohl es fast 120 Aufrufe gibt. Das summiert sich dann aber auf nur 120ms.

Ich habe lokal ein xdebug-Profil erstellt und kann feststellen, dass die meiste Zeit beim automatischen Laden verschwendet wird. Aber ich bin mir nicht sicher, ob das "normal" ist. Ich frage mich nur, warum file_exists so oft aufgerufen wird. Da ich den Eindruck hatte, ist alles vorkompiliert und zwischengespeichert. Ich benutze composer dump-autoload -o --apcunach dem Kompilieren di. Und natürlich läuft apc.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Trotzdem stecke ich vorerst hier fest. Ich scheine nicht in der Lage zu sein, herauszufinden, warum TTFB bereits 5 Sekunden beträgt. Und selbst wenn ich das gelöst habe, gibt es noch 10 Sekunden zu erklären und zu beheben. Meine derzeitige Hauptvermutung ist, dass dies einige xhr-Anforderungen in der Hintergrundblockierung sind. Dh. Ich sehe, dass Schätzungsversandmethoden erst nach einer sehr langen Lücke von ungefähr 7 Sekunden bei 13 Sekunden beginnen und ungefähr 647 ms dauern. Warum wartet es so lange, um das auszulösen? Bis dies abgeschlossen ist, wird die Loader-Animation angezeigt, sodass die Seite "hängen bleibt".

Schätzung-Versand-Methoden "Verzögerung"

Laden der Checkout-Seite

Jede Eingabe ist sehr willkommen! Ich hoffe auf eine Seitenladung von 2 - 4 Sekunden max. so habe ich angefangen.

Edit: Ich habe den hohen TTFB behoben. Wie gesagt, ich benutze Redis zum Zwischenspeichern. Auch für das Zwischenspeichern von Sitzungen, führt jedoch zu einer Sperrung zwischen zwei gleichzeitigen Sitzungen. Tatsächlich handelt es sich um die Checkout-Anfrage und die Schätzung-Versand-Anfrage, die zu einer Zeitüberschreitung von 5 Sekunden führen. Ich habe die Sitzungen wieder in den normalen Dateimodus versetzt. Leider hat dies die lange Ladezeit überhaupt nicht behoben! Meine derzeitige beste Vermutung ist, dass etwas dazu führt, dass Schätzungsversandmethoden warten, bevor sie aufgerufen werden, was zu einer Blockierung der Seite führt. Zusätzlich habe ich versucht, alle JS ohne jegliche Änderung aufzuschieben.

Edit2: Wie @ peter-ocallaghan feststellt, ist das Problem mit dem so langsamen Laden der Kasse (+10 Sekunden) eigentlich nur ein chromspezifisches Problem beim Öffnen der Dev-Konsole. Kasse / Warenkorb scheint nicht betroffen zu sein.

Steros
quelle
Ich weiß nicht viel mehr darüber. Ich habe dieses Problem, als ich API oder Plugin eines Drittanbieters anrief. Dies geschah, als ich keine Antwort erhalten habe.
55840
Ich versuche gerade, alles zu beseitigen, was stören könnte. Ich rufe auch eine API eines Drittanbieters an, also habe ich das für einen Test ausgeschaltet. Keine Änderung. Bisher konnte ich nicht ausschließen, was das Laden der Seite so langsam macht.
Steros
Ich werde mich auf die Probe stellen und vermuten, dass die Zeit beim Schließen des Chrome-Debuggers "magisch" in die Ladezeit von 2 bis 4 Sekunden fällt (oder zumindest deutlich näher daran liegt). Während der Untersuchung von Live-M2-Sites konnte ich nicht verstehen, wie Händler Ladezeiten von 15 Sekunden akzeptieren würden. Schließlich wurde mir klar, dass ich durch die Verwendung des Chrome-Debuggers als Timing-Mechanismus die Anforderung versehentlich um eine Größenordnung verlangsamte.
Peter O'Callaghan
Ich habe das gerade getestet. Die meisten Seiten dauern noch mindestens ~ 4 Sekunden und der Warenkorb bis zu 7 Sekunden. Zumindest wird die Kaufabwicklung in allen anderen Browsern nicht in 15 Sekunden geladen, eher in 5 Sekunden. Scheint, das ist etwas mit Chrom.
Steros
Ich habe es geschafft, die Zeit durch die Verwendung von memcached für den Sitzungscache weiter zu verkürzen. Wie bereits erwähnt, habe ich Redis verwendet, aber das führte zum Sperren, sodass ich wieder zu Dateien gewechselt bin, aber das scheint auch zu sperren. Also wechselte ich zu memcached und jetzt wird der Wagen beim zweiten Laden in ~ 2 Sekunden und beim ersten in 5-7 Sekunden geladen. Es scheint, dass Schätzungsversandmethoden und Summeninformationen hier der Blocker sind. Wenn ich den Einkaufswagen nur ohne Änderung neu lade, sind es diese 2 Sekunden. Wenn ich ein Produkt hinzufüge oder nur die Menge ändere und den Warenkorb aktualisiere -> 5-7 Sekunden.
Steros

Antworten:

3

Es scheint, dass mein Hauptproblem darin besteht, dass aus irgendeinem Grund gleichzeitig eine Sitzung stattfindet. Ich habe versucht, das Sitzungs-Caching mit Redis wie in der Dokumentation vorgeschlagen zu verwenden.

'session' =>
array (
  'save' => 'redis',
  'redis' =>
  array (
    'host' => '127.0.0.1',
    'port' => '6379',
    'password' => '',
    'timeout' => '2.5',
    'persistent_identifier' => '',
    'database' => '2',
    'compression_threshold' => '2048',
    'compression_library' => 'gzip',
    'log_level' => '1',
    'max_concurrency' => '6',
    'break_after_frontend' => '5',
    'break_after_adminhtml' => '30',
    'first_lifetime' => '600',
    'bot_first_lifetime' => '60',
    'bot_lifetime' => '7200',
    'disable_locking' => '0',
    'min_lifetime' => '60',
    'max_lifetime' => '2592000'
  )
),

Aber da ich das Problem mit der Sitzungssperre habe, denke ich, dass dies berücksichtigt wird:

break_after_frontend

Anzahl der Sekunden, die gewartet werden muss, bevor versucht wird, die Sperre für die Frontend-Sitzung (dh die Storefront-Sitzung) aufzuheben.

Das heißt, es gibt immer eine Verzögerung von max. 5 Sekunden. Als ich zu einer zwischengespeicherten Sitzung wechselte, wurde es etwas besser, weil die Wartezeit geringer war. Die Standardeinstellungen sind:

memcached.sess_lock_wait_min => 1000
memcached.sess_lock_wait_max => 2000
memcached.sess_lock_retries => 5

Dies sind die Standardeinstellungen einer älteren PHP-Memcached-Version. Die neueste Version schlägt diese Standardeinstellungen vor:

memcached.sess_lock_wait_min => 150
memcached.sess_lock_wait_max => 150
memcached.sess_lock_retries => 200

Nach dem Lesen dieser beiden: https://github.com/php-memcached-dev/php-memcached/pull/350 https://github.com/php-memcached-dev/php-memcached/issues/269

Ich habe versucht mit:

ini_set('memcached.sess_lock_wait_min', 150);
ini_set('memcached.sess_lock_wait_max', 150);
ini_set('memcached.sess_lock_retries', ini_get('max_execution_time') * 1000 / 150);

in Magentos index.php und dies beschleunigt den Prozess erneut. Ich bekomme jetzt eine Ladung der Kasse in ungefähr 4 Sekunden. Der Wagen ist mit ~ 5 Sekunden etwas langsamer, da die Gesamtinformationen geladen werden. (Alle versuchen zuerst kein Browser-Caching)

Ich nehme an, das Beheben des Problems mit der Sitzungssperre würde die Ladezeiten erneut beschleunigen, da ein Blick auf die Profile zeigt, dass session_start()für mehrere Anrufe immer noch 300 bis 800 ms gewartet wird .

Steros
quelle
Ich stecke auch auf diesem Sateros fest. Ich verwende Lack mit einer Problemumgehung für https und Redis. Seite ist langsam. Ich habe newrelic durchgesehen und kann keine schlüssige Antwort finden. Ist es das Redis-Problem?
Adarsh ​​Khatri
1

Mögliche Optimierungen:

Profiler

Mr. Lewis
quelle
0

Mit Solar, Memcache oder Varnish können Sie Ihre Magento-Site beschleunigen.

Puspalata Panigrahi
quelle
Ich benutze Redis und memcached. Ich kann Varnish nicht verwenden, da es https nicht unterstützt und ich keine der Problemumgehungen verwenden möchte.
Steros
@steros Bitte sehen Sie sich mein Profil und das Netzwerkprofil an, um Kontaktinformationen zu erhalten, und setzen Sie sich über Skype mit mir in Verbindung, um Unterstützung zu erhalten.
Wilson Hauck