es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Apache, Php, el servidor Centos7 de la aplicación completa no responde cuando se llama cualquier página php con una tarea larga en ejecución y responde después de que la tarea larga haya sido completada.

He implementado un servidor Apache, Php, Linux Centos7. La aplicación está en Yii2. Toda la aplicación web se bloquea cuando se llama a cualquier página php de larga duración y todos los scripts responden tan pronto como finaliza la tarea de larga duración.

¿Alguien puede ayudar a identificar el problema? ¿Es una configuración de Apache, PHP o Yii2? ¿Cómo depurar este tipo de error? ¿Qué monitorear? ¿Qué registros leer?

El servidor web responde muy rápido a los scripts php pequeños. Pero una vez que se inicia un script php de larga duración, todo el servidor comienza a responder lentamente y solo responde después de que el script php de larga duración haya terminado.

Según mi comprensión, cada solicitud es independiente de las demás, pero no puedo depurar por qué esta tarea de larga duración está retrasando la ejecución de otros scripts php pequeños.

Por ejemplo, cuando hablo de una tarea de larga duración, me refiero a la generación de un informe en formato PDF que tardará de 1 a 2 minutos en mostrar su contenido. Si abro otra página con una simple declaración de echo, solo muestra el cursor de carga en la pestaña y responde tan pronto como se completa la tarea del PDF.

Mi configuración es Apache 2.4, PHP 7.3, CentOS 7 y el framework Yii2.

Necesito orientación sobre dónde buscar.
Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución de problemas de una aplicación web colgada en Apache, PHP y Yii2

    Si su aplicación web que se ejecuta en Apache, PHP y Yii2 se cuelga o se ralentiza significativamente cuando se llama a una página PHP de larga duración, puede haber varias razones para este comportamiento. Estos son algunos pasos de solución de problemas que puede seguir para identificar el problema:

    1. Verificar la configuración de Apache y PHP: Asegúrese de que Apache y PHP estén configurados correctamente para su aplicación web. Verifique el registro de errores de Apache en busca de cualquier error o advertencia, y también verifique el registro de errores de PHP en busca de cualquier error o advertencia relacionada con su aplicación web.
    2. Verificar la configuración de Yii2: Asegúrese de que la configuración de Yii2 esté optimizada para su aplicación web. Por ejemplo, es posible que deba ajustar la configuración de conexión a la base de datos, la configuración de caché o la configuración de registro.

    3. Supervisar los recursos del sistema: Verifique el uso de CPU, memoria y disco en su servidor mientras se ejecuta el script PHP de larga duración. Esto puede ayudarlo a identificar si el servidor se está quedando sin recursos durante la tarea de larga duración.

    4. Supervisar el tráfico de red: Utilice una herramienta de monitoreo de red para verificar el tráfico de red en su servidor mientras se ejecuta el script PHP de larga duración. Esto puede ayudarlo a identificar si el servidor está experimentando un alto tráfico de red durante la tarea de larga duración.

    5. Habilitar el perfilado y la depuración: Habilite las funciones de perfilado y depuración en Yii2 para identificar cualquier cuello de botella de rendimiento en su código. Utilice herramientas como xdebug para depurar scripts PHP e identificar áreas de código que puedan estar causando problemas de rendimiento.

    6. Optimizar tareas de larga duración: Si la tarea de larga duración está generando un informe o realizando otro tipo de procesamiento, considere optimizar el código para reducir el tiempo de procesamiento. Por ejemplo, puede utilizar la caché o precalcular algunos datos para reducir el tiempo de cálculo.

    7. Utilizar procesamiento asíncrono: Si la tarea de larga duración es de naturaleza asíncrona, considere utilizar un sistema de procesamiento basado en colas como RabbitMQ o Redis para descargar el procesamiento a un proceso de trabajador separado.

    En resumen, para solucionar problemas en una aplicación web colgada en Apache, PHP y Yii2, es necesario verificar la configuración de Apache, PHP y Yii2, supervisar los recursos del sistema y el tráfico de red, habilitar el perfilado y la depuración, optimizar tareas de larga duración y utilizar el procesamiento asíncrono si es posible. Siguiendo estos pasos, podrá identificar la causa raíz del problema y tomar medidas para optimizar su aplicación web para obtener un mejor rendimiento.

Comments are closed.