páginas cargando lento

8

Actualmente me enfrento a una carga lenta de la página, y el pago es el más lento de todos con :

  • 28 solicitudes
  • 18,5 KB transferidos (resto en caché del disco o memoria)
  • Finalizar: 15.24s (el cargador desaparece y el usuario puede hacer algo)
  • DOMContentLoaded: 6.45s
  • Carga: 10.28s

La carga del pedido / carrito finaliza con:

  • 29 solicitudes
  • 28,5 KB transferidos (resto en caché del disco o memoria)
  • Acabado: 6.35s
  • DOMContentLoaded: 1.9s
  • Carga: 3.79s

mientras que un carrito vacío tiene esto:

  • 22 solicitudes
  • 8.2 KB transferidos (resto en caché del disco o memoria)
  • Acabado: 2.78s
  • DOMContentLoaded: 1.22s
  • Carga: 2,65 s

Estoy usando redis para el almacenamiento en caché y todos los cachés están activos. Javascript se minifica, combina y agrupa, así como CSS y HTML. El servidor está bastante bien situado con 8 CPU, 16 GB de RAM y un SSD. La carga, etc., nunca es lo suficientemente alta como para ser mencionada. Básicamente el servidor está durmiendo ...

Solo hay ~ 80 productos y una tienda. No utilizamos el contenido de Magento. Magento solo sirve páginas de detalles del producto, caja y área de clientes (así como backend). Hay un sistema CMS "en frente" de Magento que sirve páginas en menos de un segundo total, incluidos los medios.

Veo que TTFB para el documento de pago ya es 5.66s. Con el generador de perfiles de Magento habilitado, puedo encontrar que magento->routers_match->CONTROLLER_ACTION:checkout_index_index->action_bodycausa la mayor parte de ese tiempo. Aunque no está claro qué lo causa exactamente. Aquí el generador de perfiles no puede ayudar mucho (al menos yo).

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

También habilité el generador de perfiles de base de datos, pero ninguna consulta tarda más de 1 ms, aunque hay casi 120 llamadas. Pero eso suma solo 120 ms entonces.

Generé un perfil de xdebug localmente y puedo ver que la mayor parte del tiempo se pierde en la carga automática. Pero no estoy seguro si eso es "normal". Me pregunto por qué file_exists se llama con tanta frecuencia. Como tenía la impresión, todo está precompilado y almacenado en caché. Yo uso composer dump-autoload -o --apcudespués de compilar di. Y, por supuesto, apc está en funcionamiento.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Sin embargo, estoy atrapado aquí por ahora. Parece que no puedo entender por qué TTFB ya tiene 5 segundos. E incluso si resolviera que todavía hay 10 segundos más para explicar y solucionar. Mi suposición principal actualmente es que estas son algunas solicitudes xhr en el bloqueo de fondo. Es decir. Veo que los métodos de envío estimado solo comienzan después de una brecha intensamente larga de aproximadamente 7 segundos a 13 segundos y dura aproximadamente 647 ms. ¿Por qué espera tanto tiempo para activar eso? Hasta que finalice, se mostrará la animación del cargador haciendo que la página parezca "colgarse".

estimar-envío-métodos "retraso"

carga de la página de pago

Cualquier entrada es muy bienvenida! Espero una carga de página de 2 a 4 segundos como máximo. ya que con eso empecé.

Editar: arreglé el alto TTFB. Como dije, estoy usando Redis para el almacenamiento en caché. También para el almacenamiento en caché de la sesión, pero conduce a un bloqueo entre dos sesiones concurrentes. En realidad, es la solicitud de pago y la solicitud de envío estimado que conduce a un tiempo de espera de 5 segundos. Cambié las sesiones al modo de archivo normal. Desafortunadamente, esto no solucionó el largo tiempo de carga. Mi mejor suposición actual es que algo hace que los métodos de envío estimados esperen antes de ser llamados, lo que resulta en un bloqueo de la página. Además, intenté diferir todos los JS sin ningún cambio.

Edit2: como @ peter-ocallaghan señala que el problema con la carga de la caja tan lenta (+10 segundos) es en realidad solo un problema específico de Chrome al abrir la consola de desarrollo. Pagar / carrito no parece verse afectado.

esteros
fuente
No sé mucho más al respecto. Me he enfrentado a este problema cuando estaba llamando a un API o complemento de terceros. Esto ocurrió cuando no he recibido ninguna respuesta.
55840
Actualmente estoy tratando de eliminar todo lo que pueda interferir. También estoy llamando a una API de terceros, así que lo apagué para una prueba. Ningún cambio. Hasta ahora no pude descartar lo que hace que la página se cargue tan lentamente.
steros
Voy a arriesgarme y adivinar que si cierras el depurador de Chrome, el tiempo "mágicamente" caerá (o al menos significativamente más cerca) al tiempo de carga de 2-4 segundos. Durante las investigaciones de sitios M2 en vivo, no pude entender cómo los comerciantes aceptarían tiempos de carga de 15 segundos. Finalmente me di cuenta de que al usar el depurador de cromo como mecanismo de sincronización, desaceleraba inadvertidamente la solicitud en un orden de magnitud.
Peter O'Callaghan
Solo estaba probando esto. La mayoría de las páginas tardan al menos ~ 4 segundos y cargan hasta 7 segundos. Pero al menos el pago no se carga en 15 segundos en todos los demás navegadores, más como 5 segundos. Parece que esto es algo con cromo.
steros
Logré reducir el tiempo un poco más usando memcached para la caché de sesión. Como mencioné, utilicé redis pero eso provocó el bloqueo, así que volví a los archivos, pero parece que también se bloquea. Así que cambié a memcached y ahora el carro se carga en ~ 2 segundos en la segunda carga y 5-7 segundos en la primera. Parece que los métodos de envío estimado y la información de totales son el bloqueador aquí. Si solo recargo el carrito sin ningún cambio, son esos 2 segundos. Si agrego un producto o simplemente cambio la cantidad y actualizo el carrito -> 5-7 segundos.
steros

Respuestas:

3

Parece que mi principal problema es la concurrencia de sesión por cualquier razón. Traté de usar el almacenamiento en caché de sesión con Redis como se propone en la documentación.

'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'
  )
),

Pero como tengo el problema de bloqueo de sesión, creo que esto se tiene en cuenta:

break_after_frontend

Número de segundos a esperar antes de intentar romper el bloqueo para la sesión de interfaz (es decir, escaparate).

Lo que significa que siempre hay un retraso de máx. 5 segundos. Cuando cambié a la sesión memcached, mejoró un poco porque la espera fue menor. El valor predeterminado es esta configuración:

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

Estos son los valores predeterminados de algunas versiones anteriores de php-memcached. La versión más nueva propone estos valores predeterminados:

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

Después de leer estos dos: https://github.com/php-memcached-dev/php-memcached/pull/350 https://github.com/php-memcached-dev/php-memcached/issues/269

Lo intenté con:

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);

en index.php de Magento y esto nuevamente acelera el proceso. Ahora recibo una carga del pago en aproximadamente 4 segundos. El carrito es un poco más lento con ~ 5 segundos debido a la carga de información de totales. (todos primero intente sin almacenamiento en caché del navegador)

Supongo que solucionar el problema de bloqueo de la sesión volvería a acelerar los tiempos de carga ya que mirar los perfiles revela que todavía hay una espera session_start()de 300 a 800 ms para varias llamadas.

esteros
fuente
También estoy atrapado en este Sateros. Estoy usando barniz con una solución alternativa para https y Redis. El sitio es lento. He estado buscando en newrelic y no puedo encontrar la respuesta concluyente. ¿Es el problema de Redis?
Adarsh ​​Khatri
1

Posibles optimizaciones:

Profiler

Señor Lewis
fuente
0

Al usar Solar o Memcache o Varnish, puede acelerar su sitio magento.

Puspalata Panigrahi
fuente
Estoy usando Redis y memcached. No puedo usar Varnish ya que no es compatible con https y no quiero usar una de las soluciones.
steros
@steros Por favor vea mi perfil, Perfil de red para información de contacto y póngase en contacto conmigo por Skype para asistencia.
Wilson Hauck el