2006-10-03

Servidor como Dios manda !!!

Optimizando un server y no morir en el intento.

Un amigo que administra un servidor, me pidió ayuda para optimizar una máquina.

El server es un portal con PHP, un producto de administración de foros, Mysql y algunas cosas mas corriendo de fondo.

Trabajo como DBA desde hace unos 18 años y aunque conozco un poco no soy un experto en servidores. Quizas tampoco en Bases de datos, pero al menos me pagan por ello.

Pondré aqui todos los pasos que hicimos, algunos pueden resultar obvios pero al final la performance aumentó muchisimo, y "todo lo que suma no resta"...



* Empezar desde cero con el equipo. (format...)
* Instalar un Debian lo mas pelado posible.
* Nada de instalar paquetes, por las dudas. No se instalaba nada agregado al base.
* Nada de interfaces bonitas (X).
* A esta altura ocupa unos 230 megas y 10.000 archivos.

* Luego, como web un lighttpd.

* Se quitaron todas las cosas que no se necesitarán (herramientas, configs, etc.) Es increible ver lo que se hace con unos pocos megas (menos de 180)
* Se instaló Mysql, PHP y lo básico para el producto del Foro.
* Como norma, cada instalación que pida otros paquetes se evaluaba para ver si valía la pena o se usaba otra cosa. (ej: mc, muy bonito, pero también necesita de otros modulos)
* Nada de logs... demoras en escritura y carga de CPU.
* Mucha RAM, toda la que pudimos poner, y lo mínimo en memoria.
* Los discos, en raid5, por seguridad.
* Algunos eventos que arrancaban con el sistema operativo, fuera. Solo dejamos lo básico.
* Quitamos la detección de hardware, y otros servicios que generan daemons y que pueden alterar algo. Lo que está configurado y funcionando es lo que usaremos. Y nada nuevo.
* Nada de telnet, unicamente SSH. El Firewall muy restrictivo y solo brindaba web, dns y ssh. Pensamos poner el mysql en otro server, pero por ahora es el mismo.
* Apt-get update y upgrade, una vez por semana para ver que cambia. PERO con cuidado en que cosas actualizamos.
* Fuera manuales. Si necesitamos algo Google.com
* Definir dos cuentas como Root y enmascarar root, para que no sea posible conectarse.
* Con la herramienta AB medir la respuesta del server lighttpd. Pidiendo páginas estáticas.
* Luego medir tiempos con páginas que generen conexiones a Mysql y luego que pidan unos pocos datos. (lo normal en portales)
* Luego cambiar parámetros del lighttpd y del mysql. (pondré un detalle de todos)

No hay comentarios:

Por el mundo