1. ¡Gratis! Con este enlace obtienes $50 USD gratis para VPS Cloud Linux y Windows, Bare Metal o Dedicated en Vultr ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

Como saber la causa de VPS caído

Tema en 'VPS Hosting' iniciado por Twittesp, 30 Jul 2011.

  1. neocomp

    neocomp Usuario activo

    Sabrá tu proveedor que es tener un segundo DNS ??? :-D :-D :-D

    Porque solo tiene uno y el que tiene esta a su vez mal configurado, creo que conté como 10 errores en la configuración de sus DNS, creo que sería mas "saludable" mentalmente buscar otra solución.
     
  2. neocomp

    neocomp Usuario activo

    Ya comenzamos la optimización de MySQL, pero los problemas van mucho mas allá, revisando el código MySQL nos hemos encontrado con unas "maravillas de programación" como esta :

    # Query_time: 79.586758 Rows_sent: 57 Rows_examined: 140492005

    SELECT DISTINCT A.ID FROM posts A left join members B on B.USERID=A.USERID left join follow C on C.FID=B.USERID WHERE (A.USERID='36155' AND A.USERID=B.USERID AND A.type='update') OR (A.USERID='36155' AND A.UIDO!='36155' AND A.USERID=B.USERID AND A.type='com-update') OR (C.USERID='36155' AND A.USERID!='36155' AND C.FID=B.USERID AND A.USERID=C.FID AND A.type='update') OR (C.USERID='36155' AND A.USERID!='36155' AND C.FID=B.USERID AND A.USERID=C.FID AND A.type='com-update');

    Considerando que las bases de datos tienen EN TOTAL menos de 80.000 registros, una sola consulta necesita examinar MAS DE 140 MILLONES de registros y obviamente le toma mas de 79 segundos ... asi no hay servidor MySQL que lo soporte aunque este hiper-ultra-optimizado.

    La misma búsqueda anterior no debería demorar más de 0,001 segundos en este mismo servidor ... incluso aunque fuera secuencial y sin indices debería demorar menos de 0,1 segundos, o sea debería ser entre 790 y 79.000 veces mas rápida :cool:

    Pero como sobrepasa el tiempo de ejecución de un script el proceso además se cae.

    A que se deben estoy problemas :

    1) Pésima calidad del código y excesivo uso de joins, que además al no estar indexados generan archivos temporales en disco, los que a su vez degradan muchísimo cualquier sistema.

    2) NO HAY NINGUN INDICE para los campos de busqueda :-( :-( :-( ... por lo que todas las busquedas son secuenciales ... Prefiero no hacer mas comentarios al respecto porque se me podrían escapar palabras poco apropiadas para este foro :-D

    Vamos a ver como agregar y optimizar los índices, ya que entrar a modificar el código es algo mucho mas complicado.

    Aunque estos tips son mas para un foro de programación, nunca esta de mas tenerlos en cuenta :

    * SIEMPRE se debe usar indices en las búsquedas, salvo que sea una tabla de 200 registros.
    * Indexar por campos que tengan mucha variabilidad, no usar sexo o estado civil por ejemplo.
    * Los indices a su vez deben ser lo más cortos posibles, idealmente numéricos, un índice de 300 caracteres no tiene mucho sentido y aunque igual sirve genera archivos de indices muy grandes.
    * Los campos tipo fecha ojalá almacenarlos como números y no como string.
    * Usar los indices en el mismo orden en que están creados, si indexo por id y mail y luego busco por mail + id ... los indices NO SE OCUPAN y las busquedas son secuenciales.
    * Si se van a hacer busquedas distintas por 2 campos, hacer 2 indices separados.
    * Si se van a hacer busquedas por varios indices, filtrar primero por el campo que tiene mas registros o sino el que tiene mayor variabilidad.

    Eso por ahora :)
     
  3. neocomp

    neocomp Usuario activo

    Como comenté en el post anterior cuando hay problemas de codigo no hay mucho que se pueda hacer a ese respecto salvo mejorar la calidad de los indices o entrar definitivamente a reprogramar.

    Pero sí se puede hacer mucho optimizando el rendimiento de MySQL, sobre todo reduciendo el uso de disco, la creación de tablas temporales, las busquedas secuenciales, el uso indiscriminado de joins, etc.

    Algunos resultados ya visibles :
    - Reducción de 94% en las consultas lentas que demoraban más de 10 segundos.
    - Reducción de 91% de los joins relizados sin indices.
    - Reducción de 87% de las tablas creadas en disco.
    - Reducción de 72% en la creación de tablas temporales en memoria.
    - Reducción de 78% en la espera para el bloqueo de tablas MyISAM.

    Como también ya lo comenté anteriormente, la optimización de MySQL requiere un monitoreo en el tiempo.

    La principal razón de las caídas que tenía el servidor no era ni por falta de cpu, ni falta de memoria o hardware de bajo rendimiento, sino que principalmente debido a la casi nula optimización de MySQL, lo que saturaba el acceso a disco y ademas muchos procesos eran eliminados porque sobrepasaban el tiempo de ejecución definido por PHP ( aumentar dicho tiempo no es la solución obviamente ).

    Al existir solo un DNS y además localizado en el mismo servidor, lo más probable es que en algunas ocasiones el servicio de DNS no estaba disponible y por lo tanto el dominio era inaccesible.

    Otro dato es que se puede optimizar un sistema sin tener mayores conocimientos de los programas instalados, casi nunca he utilizado WordPress, el script de microblogging ni siquiera lo conozco y la configuración de ambos no se ha tocado.

    Aún faltan muchísimas cosas por hacer como cambiar la plataforma a 64 bits, actualizar WordPress, mejorar los DNS, etc ... pero ya se estabilizó la carga del sistema y ahora comienza el "tuning" mas fino. :)
     
  4. valhalla

    valhalla Usuario activo

    este ultimo comentario fue exceltne no como otros comentarios de este post que dan es rabia y verguenza
     
  5. Si quieres un DNS profesional puedes contratar un servicio de DNS externo en alguno de los proveedores en el mercado ya que si no vas a incumplir las RFC (Request For Comments del IETF) sobre DNS. Uno serio con CDNS-Geo tienes a http://www.communitydns.eu/global-load-balancing-service.html

    Tener las DNS bajo la misma red es de irresponsable con los problemas que ello conlleva.

    A parte de optimizar MySQL instala algún sistema de cache para PHP como eAccelerator y si usas SUPHP puedes probar con APC ya que eAccelerator no es compatible con SUPHP.
     
  6. neocomp

    neocomp Usuario activo

    Que un cliente final tenga un mal sistema de DNS o solo tenga 1 DNS es por último "aceptable" porque no tendría por que saber que es un DNS y la importancia que tienen y muchas veces los provee y configura el proveedor de hosting ... pero que un proveedor de hosting tenga solo 1 DNS para el dominio de su empresa ... sin comentarios !!!

    Además que la mayoría de los proveedores de hosting utilizan DNS dentro de la misma red e incluso me atrevería a decir que usan los mismos servidores de hosting para ello ... he visto "muy pocos" con un servicio externo de DNS o un servicio de servidores dedicados para ello.

    Por nuestra experiencia casi un 85% de los dominios presenta problemas de configuración de DNS, lo cual muchas veces implica problemas de acceso al dominio y siempre se buscan los problemas a nivel de hosting y no del DNS ... para que decir cuando hay que mover un dominio a otro servidor cambiando las IP's, una vez demoramos casi una semana en lograr la replicación completa del nuevo servidor ... cuando esa migración se planifica y se usa un servicio de DNS profesional, ese mismo proceso toma exactamente 5 segundos con cronómetro y con replicación automática garantizada por internet :-D

    Respecto a los aceleradores de PHP siempre analizamos primero el funcionamiento de los handler para ver cual usar entre DSO, CGI, suPHP o FastCGI ya que cada uno tiene ventajas y desventajas, además que no todos los aceleradores tienen el mismo rendimiento con diferentes programas o paneles de control en cambio las mejoras de MySQL son mas efectivas y no dependen tanto del handler, panel o version de PHP o MySQL.
     
    Última edición: 8 Ago 2011
  7. turcu

    turcu Administrador Miembro del Staff Administrador CH

    Es conveniente que te acostumbres a esta clases de cosas... En el foro, siempre hay gente que hace comentarios sin sentido, gente que viene por ayuda, pregunta y no responde mas, no agradece... gente que que un dia quiere buscar un servidor para empezar, despues resulta que tiene 8; gente que da la sensacion, no tiene nada mejor que hacer.

    Por ejemplo, aca, aca, aca, aca, aca, aca, aca, etc....
     
  8. neocomp

    neocomp Usuario activo

    Ya han pasado un par de semanas y desde que comenzamos a monitorear el servidor cada 2 minutos desde distintos lugares del mundo hemos reducido las caídas a CERO :-D

    Otro dato interesante y despues de procesar más de 28 millones de queries, es que redujimos los slow queries o consultas lentas que demoraban más de 10 segundos desde 5.724 a solo 176 a la semana.
    Lamentablemente hay cosas que no se pueden mejorar mucho más debido a la mala calidad del código o las consultas MySQL, pero a pesar de eso y utilizando los mismos recursos de hardware se pudo mejorar significativamente el rendimiento.

    Aun faltan varias cosas por hacer como migrar a 64 bits ( que es la más importante ) y actualizar algunos programas a las ultimas versiones, pero eso se puede ir programando con más tiempo y lo más crítico creo que ya ha sido superado :cool:
     
  9. Twittesp

    Twittesp Nuevo usuario

    Ya para cerrar el post, quisiera comentar que el amigo Neandro de Neocomp revisó gentilmente el server, detectó la falta de un DNS y realizó la optimización de la base de datos, y luego de eso todo empezó a funcionar bien, ya no he tenido caídas y me siento muy contento con su servicio, se ha preocupado mucho. Y de hecho aquí les va su página:
    neocomp.cl
     
  10. Sphyr0

    Sphyr0 Usuario activo

    eAccelerator si es compatible con suPHP, como Fast-CGI ;)
     
  11. colegio

    colegio Nuevo usuario

    Problemas DNS

    Entonces Neocomp, cuando me encuentro en las herramientas webmaster de google incidencias de problemas de acceso que pone
    PROBLEMAS DNS
    ¿Puede ser debido a que solo tenga una dns? o que solo tenga dos?

    Por otra parte, ya he puesto en otro post quemi vps se satura un par de minutos cada hora y en el hosting medicen que es producido por el programa de estadisticas webalizer . El resto del tiempo, el servidor tanto en cpu como en memoria va sobrado.
    ¿Tantos recursos consume este webalizer?
     
  12. CircuitoX

    CircuitoX Usuario activo

    Muchas gracias por estas explicaciones.
     


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta · Sobre Devandhost · Efranet