Cuando visita una dirección hospedada en Nubit Public Cloud Hosting, ocasionalmente puede recibir un error con la leyenda "Connection timed out - please try again" . Este artículo explica las causas de este error, provee pasos para que usted pueda mejorar esta experiencia, y documenta los pasos que hemos tomado para mitigar el problema.
¿Que significa este error?
El mensaje de error "Connection timed out - please try again" es desplegado cuando un programa PHP o .NET excede el valor máximo de tiempo de espera de 30 segundos. Nuestra plataforma utiliza balanceadores de carga para permitir el crecimiento tráfico a su sitio web de manera automática. Si el balanceador de carga no recibie datos desde el servidor que está corriendo el programa PHP o .NET en un espacio de 30 segundos, el balanceador de carga cerarrará la conexión al servidor web, desplegando el mensaje. En la mayoría de los casos el programa continuará su ejecución en segundo plano hasta completar el trabajo. Sin embargo, la página web resultante no se desplegará como se espera y el cliente recibe el error mencionado.
¿Porqué sucede este error?
El error de tiempo de espera puede tener muchas causas, dependiendo del programa PHP o .NET que se está ajecutando. Si usted recibe el error de tiempo de espera intermitentemente, recomendamos que verifique los parámetros del programa que está ejecutando. Es probable que el código fuente requiera optimización. En algunos casos sucede cuando se pide un parámetro que requiere mucho procesamiento (por ejemplo, un reporte muy grande). En otros casos puede ser que el mismo programa esté esperando la conexión de un tercero, por ejemplo, para enviar un correo electrónico.
A continuación, enlistamos algunas causas específicas y sugerencias para ayudar al diagnóstico, desde la perspectiva de desarrollo web.
-
Consultas a bases de datos MySQL/MariaDB grandes o poco optimizadas. Una consulta a un base de datos extremedamente grande, o poco optimizada, puede tardar un tiempo considerable en procesar los datos. Esta situación se puede aliviar mediante procesos de optimización de la base de datos para reducir la sobrecarga en tablas MyISAM o reorganizar la información en tablas InnoDB. Recomendamos ampliamente utilizar tablas tipo InnoDB, ya que nuestra infraestructura de bases de datos MySQL/MariaDB está optimizada para utilizar este tipo de tablas, además de otras ventajas inherentes a este formato.
-
Para un script en PHP que se espera que tome más de 30 segundos, puede utilizar la función "exec" para correrlo en segundo plano y escribir su retorno a un archivo o base de datos. Puede utilizar AJAX para desplegar un "icono de procesamiento" mientras el programa verifica la base de datos o archivo los datos resultantes y escribirlos en la página web. Otra opción, dependiendo de sus necesidades, es correr el programa a través de una tarea programada o cron utilizando PHP en lugar de HTTP, que no está sujeto al tiempo de espera del balanceador de carga.
-
Un sitio que intercambia datos de una conexión externa puede ser causa de este error. Por ejemplo, si un sitio web depende de una transacción a un API externo, como pude ser una pasarela de pagos, o el envío de un correo electrónico a través de API o SMTP y el servicio del tercero tarda más de 30 minutos en contestar completamente, puede generar este error. Si su script PHP o .NET realiza llamadas a servicios externos, tales como APIs, servidores SMTP o llamadas HTTP externas, verifique la conectividad con el sitio externo.
-
En ocsaciones extremedamente raras, este error puede ocurrir por una cookie inválida. Si las recomendaciones anteriores no parecen funcionar, verifique en una sesión privada en su navegador que no depende de cookies.
- Finalmente, si usted continúa recibiendo este mensaje de error, nuestro equipo de Centro de Ayuda de Nubit puede apoyarlo a determinar la causa y emitir recomendaciones orientadas a su propio sitio web.
¿Qué acciones está tomando Nubit al respecto?
Nuestro equipo de Centro de Datos ha realizado esfuerzos para mitigar en la medida de lo posible este tipo de error. Por la naturaleza de la plataforma de Public Cloud Hosting que permite la escalabildad del sitio web de manera inmediata, requerimos utilizar balanceadores de carga. Sin embargo, hemos realizado una serie de optimizaciones en la infraestructura para mitigar fuertemente la aparición de estos errores y hacer el sitio web mucho más rápido:
- Se realizaron ,ejoras importantes en el kernel de Linux de nuestros servidores Apache/PHP para mejorar la velocidad de procesamiento de PHP.
- Hemos realizado el aumento de configuración de memoria de PHP para mejorar el procesamiento de datos que requieren gran cantidad de memoria.
- Hemos habilitado el compilado y cacheo de scripts de PHP con el objetivo de mejorar su velocidad.
- Hemos actualizado el almacenamiento de sesiones de PHP a discos dedicados mucho más rápidos. Lo que permite que scripts de PHP que utilicen guardado de datos en sesiones las puedan acceder y escribir de manera más rápida.
- Se han implementado procesos que salvaguradan queries a MySQL/MariaDB demasiado largos, que inclusive pueden impactar a otros consumidores de la plataforma.
- Se han realizado cambios en las unidades de almacenamiento para reducir los tiempos de carga de archvios y mejorar la respuesta TTFB (Time to First Byte)
El equipo de Alianza Corp-Nubit tiene el fiel compromiso de continuamente mejorar nuestra infraestructura y productos para brindar a nustros clientes la mejor experiencia de usuario. Si tiene cualquier duda no dude en contactarnos por los medios del Centro de Ayuda.
|