¿Por qué aumenta la carga del sitio o el consumo de recursos de la cuenta de hosting?
Solo hay una buena razón por la cual la carga en su servidor de alojamiento comienza a aumentar: el resto es malo.Vamos a ver cómo y por qué ocurren todos.
A menudo nos contactan los propietarios de sitios debido a que tienen un problema con la alta carga de consumos de recursos de su cuenta de hosting. Esta condición común se advierte por primera vez cuando un propietario de un sitio web recibe un mensaje de advertencia de su compañía de alojamiento. Dichos mensajes pueden ser precursores del bloqueo del sitio, o de reducciones del tiempo de carga del mismo.
Este artículo cubre las diferentes razones por las que la carga en un sitio o servidor podría estar aumentando y qué se puede hacer al respecto.
Las empresas de alojamiento regulan y controlan el uso de recursos para cada plan de alojamiento. Si ejecutan sistemas operativos como el sistema operativo CloudLinux , pueden establecer números para el uso permitido de la CPU y la memoria para cada cuenta, utilizando cifras como el porcentaje de la potencia total de la CPU o el tiempo de CPU transcurrido de uso.
Ejemplos de gráficos utilizados para detectar patrones en CPU (izquierda) e I / O (derecha).
El proveedor generalmente quiere distribuir los recursos de la CPU de manera uniforme en todos los sitios de los clientes en un servidor. Si la cuenta de alojamiento de alguien usa el 90% de los recursos del sistema, eso deja solo el 10% resante para otros clientes. En estos casos el propietario de la cuenta recibirá una advertencia, notificándole sobre su uso excesivo y un recordatorio de sus cuotas. Las violaciones sistemáticas pueden hacer que la cuenta se bloquee, para evitar interrupciones en el servicio para otros usuarios en el mismo servidor.
Seamos claros. Este no es un intento de actualizar a los clientes a tarifas más caras, como algunos webmasters tienden a pensar. Las empresas de alojamiento hacen todo lo posible para asegurarse de que todos los clientes puedan administrar sus negocios sin problemas, sin las interrupciones causadas por algunos sitios renegados.
Ahora pasaré por lo que puede causar patrones excesivos de carga del servidor, considerándolos desde la perspectiva de factores externos frente a factores internos .
Factores externos
Esto significa cualquier cosa que no dependa de la configuración de la plataforma de alojamiento, el funcionamiento de los scripts o la administración del sitio. En otras palabras, solicitudes externas al sitio desde varios servicios, bots u otros sitios. Hay múltiples posibilidades.
1. Exploración de vulnerabilidades, archivos confidenciales y paneles de administración
Cualquier sitio público cuyas páginas estén indexadas en un motor de búsqueda puede convertirse en un objetivo para hackers y bots. Los hackers lo escanearán en la búsqueda de agujeros de seguridad hackeables. Es imposible parar pero puedes defenderte de ello. Las consultas intensivas del sitio consumen muchos recursos de CPU, especialmente si están utilizando el método POST. Escanear un sitio con un escáner externo puede por lo tanto aparecer como un aumento en la carga del sistema.
Si un atacante encuentra una vulnerabilidad o una variante para piratear mientras escanea, es más probable que descarguen archivos maliciosos, código, o tratar de realizar acciones destructivas.
Cuando se detiene el escaneo, el sitio continuará funcionando normalmente y la carga del sistema volverá a su valor normal. Es decir, hasta la próxima exploración.
2. Ataque de Fuerza bruta en el panel de administración del sitio
3. Registro masivo de usuarios o envío masivo de spam a través de formularios de comentarios no protegidos
4. Indexando un sitio por bots de búsqueda.
5. Agarrar y «raspar» el contenido (clonación del sitio)
6. Importación de datos (feeds, descarga de datos de comercio electrónico)
7. Utilizando imágenes o enlaces a su sitio.
Una de las causas menos obvias de la carga del servidor es vincular o usar una imagen en un sitio mucho más popular. Este es el llamado efecto slashdot, cuando el sitio no hace frente al flujo de visitantes de una fuente más popular. Otra situación es cuando alguien publica una imagen en un blog (por ejemplo, en el cuadro de comentarios). Esto es descargado por cada visitante y crea una carga en su servidor de alojamiento. Se producen problemas graves si la imagen se genera a través de la acción de un script (por ejemplo, cuando se escala con timthumb o phpthumb ).
8. Ataques en otros sitios (por ejemplo, archivo xmlrpc.php vulnerable)
Los sitios que contienen vulnerabilidades a menudo son utilizados por piratas informáticos para realizar ataques a otros recursos. A veces, un atacante ni siquiera necesita piratear el sitio. Los propietarios de las últimas versiones de WordPress, por ejemplo, pueden ver este problema cuando el archivo xmlrpc.php está comprometido. En este caso, su sitio actuará como un enlace intermedio, y el trabajo de los scripts del sitio crea una gran carga en el servidor.
9. Ataque DDoS
Si ocurre un ataque DDoS (Denegación de servicio distribuido), el sitio fallará a menos que se utilicen enfoques técnicos especiales, como el uso de un CDN o un servicio de limpieza de tráfico DDoS.
Detectar un ataque DDoS es difícil. Debido a la gran carga en el servidor, cada host puede actuar de manera diferente, ofreciendo servicios de protección contra ataques DDoS, moviendo el sitio a otro servidor, o bloqueando y desconectando completamente el sitio.
Para protegerse contra un ataque de este tipo, debe tener una solución preestablecida, de modo que cuando surja un problema, pueda resolverse rápidamente.
10. Incremento en número de visitantes
La mejor razón para el crecimiento de la carga del servidor es un aumento natural y orgánico en el número de visitantes. Esto le indica que es hora de escalar el sitio y pensar en optimizar sus scripts para aumentar el tráfico.
Para encontrar la causa de tal carga causada externamente, puede analizar los registros del servidor web, con aplicaciones especiales o una combinación de comandos en la consola SSH .
Una buena lista de las cosas para empezar a buscar es:
- Top 20 solicitudes que utilizan POST en los resultados del análisis;
- Top 20 solicitudes por el método GET / HEAD;
- Top 20 direcciones IP por número de hits;
- Top 20 páginas de referencia por número de hits
Juntos, revelarán la fuente y el tipo de tráfico, los puntos de entrada al sitio y los scripts que se llaman con mayor frecuencia, ya que lo más probable es que estén causando una gran carga.
Para reducir la carga de ataques externos o solicitudes intensivas, en la mayoría de los casos es suficiente habilitar por ejemplo la protección HTTP contra inundaciones (por ejemplo, una «pantalla de inicio» clásica). O puede conectar el sitio a los servicios de limpieza de tráfico DDoS que bloquearán las solicitudes peligrosas o especialmente activas, omitiendo las legítimas. Además, el contenido estático, como imágenes, scripts y estilos, no se entregarán desde su sitio, sino desde servidores CDN. Esto también reducirá significativamente la carga.
Puede intentar conectar un complemento de almacenamiento en caché en el CMS o un servicio de almacenamiento en caché en el alojamiento, pero en el caso de factores externos que afecten a la carga, esto puede no ser útil.
Factores internos
Los factores internos incluyen todo lo que afecta el rendimiento del sitio en el nivel de los scripts y la configuración, es decir, cualquier cosa que pueda ser controlada por el webmaster o el propietario del sitio.
1- Scripts subóptimos y una base de datos en crecimiento.
Es posible que una visita a una página de inicio, o simplemente mostrando resultados de búsqueda, pueda cargar seriamente un servidor. Esto puede deberse a una arquitectura de aplicación web mal diseñada, o una programación incorrecta por parte de desarrolladores inexpertos. El crecimiento en el tamaño de cualquier base de datos subyacente con cada actualización del sitio, por ejemplo, debido a un aumento en los artículos de la tienda de comercio electrónico, lo reducirá cada vez más, aumentando la carga en el servidor de alojamiento.
Las páginas individuales de un sitio, cada una con muchos bloques de contenido, pueden enviar docenas de solicitudes a la base de datos, realizar repetidamente las mismas operaciones en los archivos y, a veces, incluso bloquear el trabajo de otros elementos del sitio. Este problema es común en las tiendas en línea que ejecutan versiones antiguas de Joomla con el complemento VirtueMart.
2- Infectando un sitio con virus.
Piratear e infectar un sitio con scripts maliciosos es una causa común del crecimiento de la carga. Es causada por la actividad del virus, que es el resultado de fragmentos de código malintencionados insertados en scripts legítimos. El tiempo de carga y la operación de los procesos sufren, y las conexiones entre scripts y recursos externos pueden agotarse.
3- Conexiones legítimas externas a recursos de terceros
Pocos administradores de sistemas recuerdan tener en cuenta la carga creada por las conexiones a fuentes externas de información. Ejemplos de estos son los widgets, el clima y el modulo de la tasa de cambio y las noticias. Los datos descargados de otros lugares rara vez se almacenan en caché, por lo que cada vez que se abre la página, un script se conecta y descarga contenido de otro servidor. Si, por alguna razón, la fuente externa deja de responder, la velocidad de descarga del sitio principal puede verse afectada.
4- Errores en el funcionamiento de scripts.
Al ejecutar scripts, pueden ocurrir errores que son invisibles para los visitantes pero son visibles en el servidor o registros de PHP. Si el sitio tiene un alto número de visitantes o hay muchos errores, la carga en el servidor puede aumentar. Los errores aparecen cuando el sitio se cambia a una versión más reciente de PHP, una incompatible con los scripts existentes. Pueden surgir conflictos entre el nuevo núcleo de CMS y las versiones antiguas de los complementos, especialmente cuando solo se actualizan algunos, no todos los componentes del sitio.
Para analizar un problema de alta carga causado por factores internos, es necesario escanear el sitio en busca de códigos maliciosos. Si no se detecta ninguno, el perfilado de script se puede realizar utilizando modulos como el xhprof o xdebug.
Si la causa de los problemas es la arquitectura del sitio web, el sitio debe optimizarse con la ayuda de un desarrollador web experimentado. Una solución alternativa es instalar un complemento de almacenamiento en caché, que puede reducir el consumo de recursos de la CPU (es decir, la carga en el alojamiento) y acelerar el sitio.
Conclusión
Hay una propiedad más de la carga del procesador que me gustaría mencionar, y esa es su duración.
Alto carga puede ser tanto un pico a corto plazo en el gráfico durante el día, o un crecimiento constante durante un largo período. No hay nada de qué preocuparse por un aumento en el gráfico de consumo de la CPU: es prácticamente invisible, no afecta la disponibilidad del sitio y no interfiere con sus vecinos de alojamiento. Sin embargo, si el gráfico se arrastra al mismo nivel durante mucho tiempo, o durante varios días alcanza o supera el límite de carga de la CPU, entonces es necesario realizar acciones para solucionar esta carga elevada. ¿Qué hacer en tales casos? La respuesta es auditar sus sitios como se describe anteriormente, verificando los factores externos e internos que pueden estar causando problemas y obrar en consecuencia.