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.

Problema de carga de página PHP: Error fatal de PHP: Se excedió el tiempo máximo de ejecución de 30 segundos.

En mi entorno de producción, estoy observando un problema esporádico donde las páginas tardan mucho tiempo en cargarse. En los registros de errores, estamos viendo lo siguiente:

PHP Fatal error: Máximo tiempo de ejecución de 30 segundos excedido.

La línea afectada es donde se crea una sesión para el usuario.

Los directorios son físicos. Hay más de 3.5 millones de archivos en el directorio. La recolección de basura está configurada para 31 días para las sesiones en PHP.

El problema es esporádico, por lo que no puedo provocarlo. El comportamiento es consistente en que siempre es el inicio de sesión el que tarda más de 30 segundos en ejecutarse. Las líneas anteriores a eso se ejecutan bien, si listo el contenido del directorio de sesiones (ls /var/www/sessions/) tarda más de 45 segundos solo desde la línea de comandos. Creo que sería bueno tener un monitoreo de la aplicación, pero esto parece ser un problema a nivel del sistema.

He revisado las métricas de CloudWatch, pero no veo cuellos de botella relacionados con las lecturas de disco allí.

¿Alguien podría aconsejar sobre qué problemas podríamos estar encontrando y cómo solucionarlos?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución de problemas del error fatal de PHP: Tiempo máximo de ejecución excedido

    Si experimenta problemas esporádicos donde las páginas tardan mucho tiempo en cargar y se muestra el mensaje de error “Error fatal de PHP: Tiempo máximo de ejecución de 30 segundos excedido”, esto podría deberse a las siguientes razones:

    1. Tiempo de creación de sesión agotado: En el caso mencionado en la pregunta, parece que la creación de sesión está tardando más de 30 segundos, lo que genera el mensaje de error. Este problema podría ser causado por la creación de un gran número de sesiones, un almacenamiento lento de datos de sesión o el almacenamiento de datos demasiado lejos del servidor de aplicaciones.
    2. Tamaño físico del directorio: El directorio que contiene las sesiones tiene más de 3.5 millones de archivos, lo que podría afectar el rendimiento de la aplicación, especialmente al intentar leer o escribir en el directorio.

    Para resolver estos problemas, aquí hay algunas recomendaciones:

    Tiempo de creación de sesión agotado

    • Verifique el almacenamiento de datos de sesión: El almacenamiento de datos de sesión debería funcionar de manera óptima, con baja latencia y alto rendimiento. AWS ofrece un servicio de almacenamiento de datos de sesión completamente administrado llamado Amazon Elasticache que se puede utilizar para almacenar las sesiones.
  2. Aumente el tiempo máximo de ejecución: Puede aumentar temporalmente el tiempo máximo de ejecución modificando la directiva max_execution_time en el archivo php.ini. Sin embargo, esta no es una solución permanente, ya que puede causar otros problemas como tiempos de espera durante otras operaciones.

  3. Optimice el almacenamiento de sesión: Si se crean un gran número de sesiones, considere optimizar el almacenamiento de sesión para reducir la sobrecarga. Por ejemplo, en lugar de almacenar toda la sesión en el almacén de datos, solo almacene los datos necesarios.

  4. Tamaño físico del directorio

    • Optimice el directorio de sesiones: Si es posible, divida el directorio grande que contiene las sesiones en directorios más pequeños para mejorar el rendimiento al acceder a los directorios individuales. También puede considerar usar una base de datos NoSQL para almacenar las sesiones en lugar del sistema de archivos.

    • Use almacenamiento en caché: Implemente un mecanismo de almacenamiento en caché que almacene las sesiones de acceso frecuente en memoria para reducir la cantidad de lecturas del sistema de archivos.

    Además de estas recomendaciones, también se recomienda monitorear el uso de CPU, memoria y disco del sistema para detectar cualquier cuello de botella o problema que pueda afectar el rendimiento de la aplicación. Puede utilizar herramientas como CloudWatch y Amazon CloudFront para monitorear el rendimiento de la aplicación e identificar cualquier problema.

Comments are closed.