En aquellos casos en los que sospechamos de zonas de memoria RAM que no funcionan correctamente y que se producen en equipos con funciones de servidor en los que un reinicio para utilizar Memtest86+ nos supone un problema podemos optar por «memtester».
Con el comando «free» podemos averiguar cuánta memoria tiene nuestro equipo utilizada y cuánta libre. Sabiendo esto lanzamos nuestra nueva herramienta indicándole cuánta memoria tiene que reservar para testearla y cuántas pasadas debe realizar:
memtester 20131 2
En el caso anterior le estaríamos diciendo que comprobase algo más de 19GB y que hiciese dos pasadas. En caso de que encontrase errores veríamos mensajes como el siguiente:
FAILURE: 0x7f40f12dd82264da != 0x7f40f52dd82264da at offset 0x22fa2d27.
Desde la comunidad Self-Hosted de Reddit encontré un repertorio lleno de alternativas de software libre para cubrir las necesidades que se nos puedan pasar por la cabeza y que podemos implantar con mayor o menor dificultad en nuestro servidor. Desde luego sirve como buen punto de partida cuando sabemos que queremos algo pero no sabemos por dónde empezar a probar proyectos.
Animado por sustituir mi ZyXel 325-V2 por algo con más bahías y más potencia de procesamiento, me encontré con el microserver Gen8 de HP, un equipo algo viejo pero diminuto y con una base estupenda para ampliaciones.
Nuevo cuesta más o menos 280€ en el sitio más barato, equipado con 4GB de memoria RAM, un procesador Intel Celeron G1610T de dos núcleos y una Matrox G200 con salida VGA. Su hermano posterior, un Gen10, equipa un AMD Opteron X3216 de dos núcleos, con gráfica Radeon con salidas DisplayPort y 8GB de memoria RAM por 365€. Parece que lo más sensato es elegir el Gen10 porque por poco más tenemos algo más potente, pero hay algunas pegas: tiene el procesador soldado a la placa, es más ruidoso y la potencia no llega a lo que podría el Gen8 como más adelante veremos.
Ampliaciones para el Gen8:
- Memoria RAM: ha de ser DDR3 ECC y unbuffered, dato muy importante porque de lo contrario el equipo no arrancará, se quedará al 90%. Soporta hasta dos módulos de DDR3 de 8GB a 1600Mhz. El precio en ebay ronda los 120€ por los dos módulos de 8GB a 1600Mhz.
- CPU: hay para todos los gustos, ya que tenemos refrigeración pasiva de hasta 35W, por lo que el sustituto del procesador no puede irse mucho de esos valores, aunque siempre nos quedará hacer un poco de modding para añadir algún ventilador silencioso. Así que, según esta tabla, nos podemos quedar con Intel Xeon E3-1265V2 por unos que le saca bastante al procesador de serie y al AMD, con 4 núcleos y 8 hilos. Nos puede salir por 130€ comprado en China.
- Tarjeta Gráfica: al tener un puerto PCI-Express de x16, nos da la posibilidad de meter una gráfica de bajo perfil, una Nvidia 1030 o incluso 1050.
Al final, entre unas cosas u otras, el microservidor nos sale por unos 530€ sin ampliación de gráfica. ¿Qué nos costaría si lo montamos clónico?
- Memoria RAM: dos módulos de 8GB DDR3 ECC con registro (sale mucho más barata y en este caso no estamos limitados) por 55€ en China.
- CPU: un Intel Xeon E5-2670 de 8 núcleos y 16 hilos, con un TDP de 115W (tampoco nos limita la refrigeración ni la fuente de alimentación) por 81€ en China.
- Placa Base: Huanan X79 de formato ATX bastante completa por 88€ en China.
- Ventilador: Cooler Master Hyper 212 EVO para mantener unas temperaturas aceptables con un ruido mínimo.
- Torre: Thermaltake V1 en forma de cubo, bastante más grande de lo deseado pero estando limitados a la placa ATX no tenemos más elección. Un precio de 50€
- Fuente de alimentación: cualquiera por un precio entorno a los 60€ nos sería aceptable.
Todo suma unos 365€, unos 200€ más barato, con posibilidad de expansión mucho mayor. ¿Qué pegas tiene?
- Es una torre muy grande, ocupa demasiado.
- No tienes fácil acceso a los discos duros, en el HP puedes extraerlos del frontal sin echar mano del destornillador.
- No tienes ILO, una interfaz que te permite administrar el servidor aunque esté apagado (pero conectado a la luz).
- Consume mucha más electricidad.
Lo ideal es encontrar un Gen8 de segunda mano por un mejor precio pero es algo bastante difícil, están bastante cotizados últimamente y por culpa de los actuales precios de la memoria RAM, su ampliación no se hace fácil.
En servidores con limitaciones importantes de memoria, muchas veces el sistema se queda sin memoria y el señor OOM Killer decide qué proceso tiene que matar para liberar recursos. Esto puede parecer lógico pero, en ocasiones, cuando sucede continuamente y de forma aleatoria supone un serio problema, sobretodo cuando mata el proceso de MySQL, Apache o PHP.
Es por ello que, cuando intentas indagar en la raíz del problema, te encuentras con que el kernel de Linux siempre reserva memoria para las aplicaciones que lo piden sin verificar si dispone de suficiente. Por tanto, las aplicaciones pueden llegar a pedir más memoria de la que realmente existe libre y por ello OOM Killer intentará hacer hueco.
Para cambiar este comportamiento hace falta modificar el fichero «/etc/sysctl.conf», donde añadiremos estos dos parámetros:
vm.overcommit_memory = 2
vm.overcommit_ratio = 80
Con el primer parámetro forzaremos al kernel a no dar más de lo que existe y el segundo define el ratio con el que se calculará cuánto podrá dar a cada una de las aplicaciones.
Para más info podéis consultar la web del kernel de Linux.
Tienes un servidor con una gran cantidad de bases de datos y necesitas lanzar un proceso de optimización de tablas. Puedes ir una a una:
OPTIMIZE TABLE miTabla;
O hacerlo de golpe desde un terminal:
mysqlcheck -u username -p –auto-repair –optimize –all-databases
Cuando un sistema genera una cantidad considerable de log’s y estos no están bien administrados (logrotate), puede que a la larga vayan mermando nuestro espacio en disco. Una buena forma de encontrar cuán grande es nuestro problema es realizando una búsqueda de aquellos ficheros involucrados:
find . -type f -name «*error.log» -exec du -h {} \;
El anterior comando nos mostrará el espacio ocupado por todos aquellos ficheros «error.log» que tan abundantes son en los servidores web. Y para eliminar los ficheros que nos resulten innecesarios (por ejemplo que tengan más de 60 días de antigüedad), usaremos el siguiente comando:
find . -type f -name «*error.log» -mtime +60 -delete
Últimos Comentarios