2012-08-06 28 views
7

Espero que alguien me pueda ayudar con este problema de Drupal 7. Noté que el tiempo de carga es muy lento cuando ingreso la dirección del sitio por "primera vez". Tarda aproximadamente 20 (promedio) segundos para comenzar a cargar archivos y mostrar el contenido. Al igual que tiene un poco de retraso. Sin embargo, después de ese período es muy rápido y todo está bien. Una vez que las páginas están cargadas, podemos actualizarlas rápidamente y sin demora.Drupal 7 es demasiado lento en "primera carga"

Adjunto una imagen para ver la cascada de red de Chrome.

Gracias a todos.

Image: http://i.stack.imgur.com/vuejk.png (echar un vistazo a la segunda fila)

[ACTUALIZACIÓN] Estoy utilizando php-apc, pero todavía tiene el mismo problema.

+0

Parece que necesita usar algo de caché o CDN para evitar esperas prolongadas en la primera vista. Tu página web en sí misma es demasiado larga, indica un problema en la base de datos, tal vez –

+0

¿Estás utilizando una base de datos externa? Es posible que los resolvedores DNS no estén funcionando. – frustratedtech

+0

Consulte http://drupal.stackexchange.com/questions/36147/performance-problem-delay-on-first-request para obtener una lista bastante definitiva de lo que podría estar causando el problema – Clive

Respuesta

6

Esto es (muy probablemente) debido a las tareas de Drupal Cron que se ejecutan cada pocas horas/días (según la configuración). Drupal luego ejecuta todos los trabajos cron en cola ... lo que puede llevar mucho tiempo.

Eche un vistazo a la página this drupal.stackoverflow.

correo: También, este truco puede ayudar, pero no he probado esto mismo: http://drupal.org/node/1576686

2

apagar el módulo Administrador de actualizaciones en la producción. Cuando Cron se ejecute, buscará actualizaciones que llevarán tiempo. Ahorre tiempo habilitando solo este módulo en los sitios de desarrollo (Dev, Staging, etc.). No es necesario que Production esté pasando tiempo con esto.

0

Eche un vistazo a lo que tiene en la sección de su sitio web sección. Si hay muchas declaraciones @import allí, entonces el problema probablemente sea en frontend en lugar de back-end.

Drupal utiliza una gran cantidad de archivos .css y .js por defecto. El navegador puede comenzar a dibujar la página que solicite solo después de que se descarguen todos los archivos .css y .js de la sección head.

El problema con @import es que su navegador puede descargar solo un archivo css por vez. Es un caso diferente con la etiqueta. Los archivos Css se pueden descargar en paralelo en este caso, lo que significa más rápido.

La segunda vez que visita los archivos css y js del sitio web se cargan desde la memoria caché del navegador y esto explica por qué las páginas se cargan más rápido.

Solución sugerida: Vaya a admin/settings/performance enable css and js aggregation.

2

Sé que esta es una vieja pregunta, pero esta es mi solución. Esto ocurre con los sitios que no generan mucho tráfico y el grupo de aplicaciones del sitio en el servidor se cierra automáticamente después de un período de tiempo específico (creo que el valor predeterminado es de 20 minutos). Por lo tanto, la primera persona que acceda al sitio web después de este período de tiempo tendrá que esperar a que se reinicie el grupo de aplicaciones y eso puede llevar algo de tiempo en los sitios php. Esto también aplica para trabajos de maíz. El trabajo de núcleo de maíz está configurado para ejecutar cada minitúas "n", pero solo se puede ejecutar cuando alguien acceda al sitio. Por lo tanto, la primera persona que llegue al sitio después del intervalo establecido para el maíz deberá esperar a que se ejecute el trabajo de maíz. Por lo tanto, para un sitio de producción, debe marcar los trabajos principales de maíz y ejecutarlos manualmente o usar un servicio externo para ejecutar el maíz (pasando la url externa del maíz). La mejor solución es utilizar un servicio externo gratuito como Uptime Robot para acceder a su sitio cada 5-10 minutos, manteniendo así la conexión activa.

+0

En relación con el cierre del grupo de aplicaciones, sucederá lo siguiente: usando ** PHP-FPM ** con _pm = ondemand_ o usando ** PHP-CGI ** con _FcgidIdleTimeout_ con un valor> 0. –

Cuestiones relacionadas