Este ultimo tiempo he estado trabajando con sitios webs de muy alto trafico (de 300 clicks por segundo a 600), y la verdad es bastante molesto tener a un cliente que pierde dinero en internet por culpa de una mala planificacion del sistema o un rapido crecimiento no planificado del sistema.
Bajo una investigacion llegé a la conclusion que todo sitio web mientras sea rentable debe tener una inversion tecnologica a cabo a nivel de hardware, y una inversion a nivel de conocimientos y tiempo para tus desarrolladores.
Dentro del area que me toco a mi ver, fue la planificación ademas de escojer las herramientas necesarias para llevar a cabo esta dificil mision.
El resultado de mi investigación fue:
- Necesitamos tener un buen hardware y mucha ram en el servidor para poder cachear lo maximo posible nuestro modulo critico (Casi siempre es la portada).
- Para probar nuestro servidor, debemos tener una herramienta llamada jmeter, para analizar el tiempo de respuesta de nuestros elementos estaticos y dinamicos en el servidor.
- Utilizar memcache en un servidor apartado con MUCHA RAM para cachear los elementos antes mencionados.
- En lo posible correr los menos servicios posibles en el servidor critico (Chao PostFix, chao ProFTPD, chao Imapd, etc).
- Siempre SOBREXIGIR AL SERVIDOR, cuando se prueban los submarinos no se sumergen a lo maximo estipulado, sino que a un 10% mas de lo comun.
- Optimiza tus consultas SQL, no es lo mismo
SELECT * from productos WHERE precio = (SELECT precio from productos ORDER by PRECIO DESC LIMIT 0,1);
A la consulta:
SELECT * from productos ORDER by precio DESC LIMIT 0,1;
- Utiliza un servidor de bases de datos para leer y otro servidor de bases de datos para escribir, utilizando la tecnica de replicacion.
- Mide siempre en tiempo real con top cual es el servicio que mas consume recursos, si es el servidor WEB tienes alguna funcion quizas mal programada logicamente, si es base de datos alguna consulta mal hecha.
- Intenta rescatar los elementos estaticos de otro servidor, recuerda que consumen recursos por cada solicitud en el mismo servidor.
- Prueba cada uno de los metodos de tus clases, y fijate cual es el que toma mas tiempo en ejecutarse para poder optimizar.
No hay Trackbacks
5 Comentarios
Genial, siempre aprendo de ud. Mr. Ramirex!
Gracias great post about web soft optimization.
También es importante simplificar las páginas: html simple, imágenes livianas, javascript y css livianos (y no cargar los innecesarios), evitar flash, etc.
Es bueno revisar en la BD cuales consultas son las que utilizan más recursos y demoran más en ejecutarse para tratar de optimizarlas o agregar índices o algo semejante.
Justamente estimado @Alvaro
Bien Fabian estas en las grandes ligas ya perro! mucha suerte en tus proyectos has sido perseverante, disfruta tu exito! con respecto a tu tips puedo mencionar algo. El sistema de replicacion de DB por lo general es pesimo y un sistema con alto volumen de transacciones vale yuyo! pero bueno para eso existen soluciones como ORACLE RAC jajaja que te dejan tuerto!
Quisiera aprender a hacer una pagina web y que me den los programas sin vueltas…es mucho pedir capaz