Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > La Taberna
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-05-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Gestionar y optimizar servidor MySQL, barato, barato.

Sí, sé que es la taberna, pero es que creo que no entra del todo dentro del foro de bases de datos y tal.

Resulta que hace unos meses conocí a un chico que tiene una empresa de servicios web, y ayer me llamó porque tenían un problema de rendimiento con él. Acudió a mi porque necesitaban un "programador de bases de datos" (sic.) y sólo me conocían a mi, así que me pide presupuesto. Le digo que voy a revisarlo y que luego le cuento.

Pues eso, me da sus claves de acceso y tal, y como soy buena persona (suerte que tiene el tío) me limito a entrar, revisar logs (ni uno), el monitor y tal, y efectivamente: la UCP echando humo, la memoria por las nubes, los tiempos de consulta largos y extensos... y el monitor quejándose de que la caché es pequeña, que los accesos a disco son excesivos, que hay configuraciones contradictorias y que en caso de duda está usando el menor de los valores indicados. Total, que le contesto contándoles mi opinión, diciéndoles que yo tampoco soy tan experto como el creía y me abstengo a darles presupuesto, pero les digo que estoy a su disposición si no hay más remedio, que algo puedo hacer, y que consultaré a colegas de la profesión...

Y ahora sólo pido vuestra opinión, y si alguno sabe más que yo de MySQL que lo diga por si no encuentran nada mejor. Presupuesto han pedido, así que algo pagarán.

(Moderadores varios: si veis algo fuera de lugar, decidlo, no os cortéis. Incluso editadlo, si lo creéis oportuno)
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #2  
Antiguo 07-05-2013
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
El problema parece que no es el servidor (hardware y software) sino un mal diseño de la aplicación que lo utiliza. Lo que hay que ver en realidad es que consultas se lanzan y como están construidas así como las estructuras y tipos de las tablas, si utiliza transacciones (InnoDB) etc. Prueba revisando el servidor sin ninguna conexión activa y verás como los valores son normales, salvo que le hayan metido mano sin saber. Una consulta por muy lento que sea el hardware no debe tardar gran cosa a no ser que la aplicación se esté dando vida haciendo "select * " por todos lados aderezado con subquerys innecesarias, etc.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #3  
Antiguo 08-05-2013
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up

Hey Ñuño... ¿y será posible que tú nos puedas pasar las claves de acceso y demas cosas para ver nosotros mismo tambien?..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #4  
Antiguo 08-05-2013
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Si puedes cambiar los SQL es un cosa. Si no es otra.

Si no puedes: Mas memoria, mejor disco. Ajustar el servidor a los parametros que te recomienda la tal herramienta o como digan en internet.

Si puedes, entonces te capturas los SQL que sean mas lentos, te traes un backup, miras el plan de consulta, corriges, mejoras hasta que sea optimo.

Y mira como se optimiza el Mysql en la documentacion. Y si estas en una version vieja, subirte a la mas nueva que puedas sin romper la app.

Y miras si hay que mejorar el linux.

Como vez, no hay como presupuestar esto porque NO SE SABE QUE PASA NI CUANTO VA A DEMORAR. Asi, que lo que yo haria, es cobrarles :

1- Por hora, si quieres que sea barato y hacerles el fa
2- Por generador de valor, si es un cliente serio (ie: Cobras no tanto por lo que te demores sino por lo valioso de tu trabajo, en base a la tipica historia del man que conecto un "cablesito" y cobro un millon de dolares)
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 08-05-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por rgstuamigo Ver Mensaje
Hey Ñuño... ¿y será posible que tú nos puedas pasar las claves de acceso y demas cosas para ver nosotros mismo tambien?..
Saludos...
Eso me parece de lesa ética, apañero. No sé yo si sería corresto...

Cita:
Empezado por AzidRain Ver Mensaje
El problema parece que no es el servidor (hardware y software) sino un mal diseño de la aplicación que lo utiliza. Lo que hay que ver en realidad es que consultas se lanzan y como están construidas así como las estructuras y tipos de las tablas, si utiliza transacciones (InnoDB) etc. Prueba revisando el servidor sin ninguna conexión activa y verás como los valores son normales, salvo que le hayan metido mano sin saber. Una consulta por muy lento que sea el hardware no debe tardar gran cosa a no ser que la aplicación se esté dando vida haciendo "select * " por todos lados aderezado con subquerys innecesarias, etc.
Cita:
Empezado por mamcx Ver Mensaje
Si puedes cambiar los SQL es un cosa. Si no es otra.

Si no puedes: Mas memoria, mejor disco. Ajustar el servidor a los parametros que te recomienda la tal herramienta o como digan en internet.

Si puedes, entonces te capturas los SQL que sean mas lentos, te traes un backup, miras el plan de consulta, corriges, mejoras hasta que sea optimo.

Y mira como se optimiza el Mysql en la documentacion. Y si estas en una version vieja, subirte a la mas nueva que puedas sin romper la app.

Y miras si hay que mejorar el linux.

Como vez, no hay como presupuestar esto porque NO SE SABE QUE PASA NI CUANTO VA A DEMORAR. Asi, que lo que yo haria, es cobrarles :

1- Por hora, si quieres que sea barato y hacerles el fa
2- Por generador de valor, si es un cliente serio (ie: Cobras no tanto por lo que te demores sino por lo valioso de tu trabajo, en base a la tipica historia del man que conecto un "cablesito" y cobro un millon de dolares)
Pues lo primero que pensé nada más ver el percal se parece bastante a lo que habéis comentado, así que veo que sé más del tema de lo que pensaba. ¡Bien por mi!

Un problema es que es un sistema en producción, así que pararlo es complicado. En cuanto a lo de meterse dentro de la aplicación, están usando un programa de terceros; en concreto uno que permite montar un Facebook propio, imaginaos. Es más, me comentaron que ha tenido más éxito del esperado, así que supongo que parte del problema es ese éxito: la aplicación no está preparada para soportar la carga (no lo sé seguro pero apuesto a que está totalmente hecha en PHP), y posiblemente el servidor tampoco.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #6  
Antiguo 08-05-2013
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Un problema es que es un sistema en producción, así que pararlo es complicado.
Y quien ha dicho pararlo? Mas bien replicarlo. Copiar un backup y montarlo en otro servidor (ojala igualito). Se podria con cualquiera de los servicios en cloud y/o en una maquina virtual. El asunto es que si es un programa de terceros arreglarlo seria dificil/imposible dependendiendo si hay o no acceso al codigo fuente.

Cita:
Empezado por Ñuño Martínez Ver Mensaje
la aplicación no está preparada para soportar la carga (no lo sé seguro pero apuesto a que está totalmente hecha en PHP), y posiblemente el servidor tampoco.
Aun sin tocar el codigo, hay mucho que se puede hacer:

1- Usar un CDN como https://www.cloudflare.com/ para acelerar el proceso de descarga del front-end. La parte de servir html/js/css es normalmenten la mayor culpable del la lentitud percibida por el usuario final.

2- Cambiar a nginx (si usan apache)

3- Hacer lo que dice (tanto como se pueda): http://developer.yahoo.com/performance/rules.html

4- Montar un cache en frente de la app web, como https://www.varnish-cache.org/

5 - Luego viene el servidor en si. Digamos que no teniendo de otra probaria de inmediato con https://www.digitalocean.com/ si el problema es acceso al disco (por lo del SSD) o si el problema es memoria mas ram. Si tienen acceso fisico al servidor, comprar ram y listo. Es BARATO: http://www.amazon.com/Corsair-Vengea...words=ram+64gb (o 32GB, o 24GB)


Nada de lo anterior requiere tocar codigo, y permite comprar tiempo. Ademas, son cosas "faciles" de hacer. Con excepcion de mover la BD a otro servidor, no hay downtime de nada (y aunque haya que moverlo, no es necesario parar del todo, es posible hacer el cambio sin downtime)

Luego viene la BD en si. Con ajustes a los parametros se puede mejorar MUCHO. Ademas, si la BD comparte equipo con el servidor web, moverlo a un equipo dedicado es MEJOR.

Luego lo que viene es poner un "puente" entre la BD y el servidor web. Como no se que motor es, es cualquier cosa parecida a postgress como este: http://wiki.postgresql.org/wiki/PgBouncer.

AUN NO SE HA TOCADO CODIGO.

A partir de aqui, no se me ocurre que hacer sin tocar codigo. Que sigue?

1- Usar redis/memcached para cachear cosas (como html, consultas) <- Posiblemente el mayor salto en desempeño aparte de subir la RAM
2- Mejorar los SQL
3- Particionar datos, BD con balanceo de cargas, etc.
4- Por ultimo, si realmente estan creciendo como espuma, contratar gente que sepa del cuento y reescribir la app, de forma progresiva.
Mucho de esto se aprende con http://highscalability.com/
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 08-05-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Guau, Mamcx. Gracias por la guía.

Sé de buena tinta que el servidor está en una granja a la que no tienen acceso, así que eso de subir RAM y tal... pues no sé. Del resto, sé que tienen Linux, pero no estoy seguro de si se podrá acceder con un telnet. Lo que me pasaron fue una dirección web donde enlazas a distintas páginas que te dicen cosas (phpmyadmin y similares). Y sí, es MySQL, Apache... Vamos, un LAMP de lo más tópico.

Pero gracias. Le echo un vistazo a todo lo que me comentas, que aun no funcionando con esto puede funcionar con otras cosas.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Estoy buscando un albergue barato en madrid sucrepr La Taberna 0 26-08-2011 22:15:26
MySQL Refrescar Servidor RebeccaGL MySQL 1 25-09-2010 18:50:07
Sincronizar BD MySQL Hosting con BD MySQL servidor local ivantech MySQL 3 09-03-2010 19:01:07
Conectar a Servidor Mysql alt126 Conexión con bases de datos 2 29-07-2008 22:15:00
Optimizar con MySql whatson Conexión con bases de datos 2 23-01-2008 04:41:27


La franja horaria es GMT +2. Ahora son las 20:45:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi