Esta página fue traducida automáticamente. Lee el original en inglés. English

Biblioteca de IBSurgeon

Rápido, Furioso y Económico: servidor con rendimiento suficiente para base de datos de pequeña empresa por menos de US$1000

(c) Alexey Kovyazin, IBSurgeon, 21 de septiembre de 2017 (última actualización - 29 de septiembre de 2017)

Es fácil conseguir un servidor potente si estás dispuesto a gastar muchos $$$: hay proveedores líderes como Dell, HP, y muchas empresas de hardware menos conocidas, que estarán encantados de venderte una máquina potente (normalmente, con entrega en 4-6 semanas).

Sin embargo, el dinero siempre es un problema, especialmente para pequeñas empresas y startups, por lo que hay una gran demanda de soluciones baratas «suficientemente buenas». Este artículo describe el enfoque práctico para construir un servidor de base de datos «suficientemente bueno» con el rendimiento adecuado para una pequeña empresa. También incluye cálculos y enlaces a los productos específicos que recomendamos.

Nuestra empresa (IBSurgeon) proporciona servicios de consultoría y cuidado de bases de datos para bases de datos Firebird, y vemos muchos tipos de servidores (o, mejor dicho, computadoras utilizadas como servidores). Los clientes grandes utilizan configuraciones de gama alta con SAN sobre SSDs, más de 350 GB de RAM y dobles Xeon de gama alta a bordo, pero los clientes de pequeñas y medianas empresas utilizan máquinas menos potentes ya que no necesitan mucha potencia de cálculo y no tienen mucho dinero.

Hemos notado que muchos servidores son en realidad estaciones de trabajo comunes y, lo más interesante, funcionan bastante estables durante años y años. Hay algunas cosas realmente exóticas, como Windows XP en una computadora con 2 GB de RAM (¡la computadora fue construida en 2002!), pero la mayoría son simplemente soluciones de hardware «suficientemente buenas» auto-ensambladas.

Por supuesto, es una cuestión de estadísticas, y nadie recomendará usar una estación de trabajo como servidor, pero la pregunta es: ¿dónde está el equilibrio entre estabilidad y gastos? ¿Es un buen enfoque usar un servidor casero barato en términos de relación calidad-precio? ¿Qué podemos obtener por USD$1000? ¿Cuáles son los riesgos relacionados con hardware no caro?

¿Quién puede estar interesado en un servidor de base de datos por menos de USD$1000?

Consideremos la siguiente situación: una oficina con 20-25 trabajadores, la gente trabaja 7x5, el tamaño de la base de datos es de alrededor de 50 GB. Es una situación típica para una pequeña empresa que utiliza algún ERP o CRM o aplicación específica (por ejemplo, sistema de automatización de consultorios dentales) para aplicaciones de pequeñas empresas basadas en Firebird.

Imaginemos que la empresa no está inundada de dinero y quiere economizar tanto como sea posible, sin perder la fiabilidad, para lograr un rendimiento suficientemente bueno. La persona responsable en la empresa entiende que todo el hardware fallará tarde o temprano, y quiere disminuir los riesgos asociados.

¿Qué tipo de servidor necesitan para una base de datos Firebird de ese tamaño y carga? Según la Guía de Hardware de Firebird, el recurso más crítico para la base de datos es la E/S de disco, después la RAM, y por último la CPU (interesante que cuando los clientes de PYMES compran servidores de los grandes proveedores, a menudo eligen servidores con CPUs potentes y discos lentos, probablemente debido a materiales de marketing que sobreenfatizan la importancia de la CPU).

Discos

E/S rápida significa que necesitamos unidades de estado sólido (SSDs), ya que el SSD es el rey de las lecturas y escrituras aleatorias. Por supuesto, el SSD no es una panacea para las bases de datos, pero proporciona un rendimiento realmente alto, y ahora es la elección correcta para bases de datos.

Los SSD vienen en dos variedades: discos de grado empresarial y de grado consumidor. La diferencia clave entre ellos es un recurso, calculado aproximadamente como el número de operaciones de E/S que pueden realizar.

Por ejemplo, Samsung 850 Pro 256 Gb MZ-7KE256BW - SSD de grado consumidor (basado en tecnología MLC), tiene TBW (total de bytes escritos) de 150 Petabytes, y DWPD (escrituras de disco por día) = 0.16. O, más simplemente, el recurso se puede explicar como 40 GB de escrituras cada día durante 10 años.

Actualización: tuvimos una sugerencia de que Samsung PM863a ($181.59) o SM863a ($249) son más fiables que el 850 Pro, pero aún asequibles - esencialmente, por $60 extra podemos obtener mejor estabilidad y algún tipo de protección contra sobretensiones eléctricas.

¿Es mucho o no? Tenemos un servidor de prueba con SSD de grado consumidor donde ejecutamos pruebas de carga para simular el trabajo intensivo de 100 conexiones en una base de datos de 60 GB. Cada día se inician 3 pruebas de este tipo, de 3 horas cada una - esto significa que estas pruebas simulan una jornada laboral de 9 horas. Las pruebas ya llevan 2 años ejecutándose, y el recurso restante (según el firmware) es del 54%.

Por supuesto, ~50% del recurso significa que la unidad debe ser reemplazada durante el próximo año… ¿Es tan malo? Cada varios años la velocidad de los SSD aumenta y los precios bajan: el SSD del ejemplo tiene 6 Gb/s y cuesta $137, en 2-3 años habrá unidades de 12G por el mismo precio.

Precio en Amazon desde USD$124

Los SSDs de grado empresarial están construidos sobre la base de otra tecnología (SLC), y pueden realizar aproximadamente 30 veces más operaciones que el SSD de grado consumidor del mismo tamaño. Además, cuestan aproximadamente 3 veces más que los SSDs de grado consumidor. La pregunta es: ¿realmente necesitamos 30 veces más rondas de E/S para el servidor de una pequeña empresa por 3 veces el precio?

Si buscamos una solución rápida y asequible, es muy atractivo usar SSDs baratos de grado consumidor y reemplazarlos regularmente (y monitorear su recurso con el firmware, por supuesto).

Riesgos asociados con los SSD

Como personas adecuadas, entendemos que el hardware de grado consumidor tiene menos recurso y altas probabilidades de fallar, por lo que necesitamos reducir esas probabilidades. ¿Cómo podemos reducirlas?

Para disminuir la probabilidad de fallo repentino del hardware, es necesario usar 2 SSD para la base de datos, agrupados en RAID1. RAID1 no significa que necesitemos un controlador RAID separado; será suficiente usar las capacidades RAID de los chipsets de placas base modernas - esencialmente, hay un controlador RAID simple sin caché.

Actualización: dado que los controladores RAID baratos en la placa base podrían no soportar la función TRIM de los SSDs, para evitar la degradación del rendimiento se recomienda configurar RAID por software, que orquesta operaciones simultáneas a nivel de software.

Si no hay caché, ¿cuál será el rendimiento? Los SSDs modernos, como el Samsung del ejemplo, tienen caché integrada y controladores muy inteligentes - por lo que son lo suficientemente rápidos sin controladores RAID dedicados.

Por supuesto, es necesario verificar la salud de los discos; normalmente, el firmware proporciona una estimación suficientemente buena de la vida útil de los discos.

Copias de seguridad

Por supuesto, necesitamos unidades para las copias de seguridad. La mejor opción será un par de unidades SATA de 2 TB cada una - por ejemplo, Seagate SkyHawk 2TB Surveillance Hard Drive, con 5900 rpm.

El precio en Amazon es $74,99

Necesitamos 2 HDDs porque las unidades para copias de seguridad también deben ponerse en RAID1, para proporcionar protección contra fallos repentinos del hardware. Estas unidades de copia de seguridad pueden ser bastante lentas; su propósito principal es almacenar copias de seguridad y proporcionar una velocidad adecuada de lectura/escritura secuencial. Las unidades de 5900 rpm son más lentas que las de 7200 rpm, pero se sabe que son más fiables. Esta serie específica de unidades (Seagate SkyHawk) está diseñada para escrituras lineales: esto es lo que necesitamos para las copias de seguridad.

Riesgos para las unidades de copias de seguridad

El riesgo es el mismo que para los SSD, y nos protegemos de la misma manera: RAID1 y monitoreo. Debería haber poca probabilidad de que ambas unidades en RAID1 fallen simultáneamente.

Unidad del sistema

¿Necesitamos una unidad separada para el sistema operativo? En la configuración más barata - no, será suficiente mantener el SO y la base de datos en la misma unidad. Acelerará ligeramente la degradación del SSD, pero no tanto - en nuestro escenario, definitivamente debería durar 3 años.

CPU

Para un servidor de base de datos Firebird es mejor elegir una CPU con muchos núcleos y la frecuencia más baja posible. Sí, leíste correctamente - no hay necesidad de CPUs de alta frecuencia para un servidor de base de datos. Firebird (si está configurado correctamente) usa todos los núcleos para el trabajo normal, pero no los carga al 100%.

Hay excepciones: algunas operaciones de mantenimiento (copia de seguridad y restauración) que se benefician de una CPU de alta velocidad, y consultas SQL mal escritas con uso incorrecto de índices - consumen el 100% del núcleo, pero esto es una clara señal de que se requiere optimización del rendimiento de la base de datos. En general, no es posible compensar consultas lentas con CPUs de gama alta: incluso si la CPU es 3 veces más rápida, la consulta lenta seguirá siendo lenta.

Por otro lado, tener varios núcleos puede compensar la existencia de tales consultas que consumen CPU: con un número de usuarios inferior a 25 y con 8 núcleos, no hay mucha probabilidad de que todos los núcleos estén ocupados simultáneamente por consultas lentas.

Y, dado que buscamos la solución barata, estamos limitados a CPUs de escritorio - y, lamentablemente, a chips AMD. Esencialmente, si Intel pudiera proporcionar un procesador de escritorio con 8 núcleos por el mismo precio o ligeramente más alto que el AMD FX-8320E, podríamos usar Intel también, pero en este momento no veo tal opción.

Este chip AMD no es tan moderno ni tan rápido, pero tiene 8 núcleos y es barato, por lo que es la elección óptima para nuestro servidor rápido y barato.

El precio en Amazon es USD$108

Riesgos asociados con la CPU de escritorio

¿Cuál es el riesgo potencial asociado con la CPU? Para chips de baja frecuencia (es decir, no overclockeados) con un disipador adecuado, casi no hay riesgo. ¿Cuándo escuchaste por última vez sobre una CPU de escritorio que fallara - en 2003? Por supuesto, las CPUs de servidor son mucho más rápidas, pero buscamos una solución suficientemente buena.

Es una buena idea monitorear la carga y temperatura de la CPU para prevenir reinicios ocasionales.

RAM

La cantidad de RAM necesaria depende del tamaño de la base de datos y del número de usuarios. En nuestro escenario, el tamaño de la base de datos es de 50 GB y tenemos un máximo de 30 usuarios.

El tamaño máximo que Firebird puede consumir es el tamaño de la base de datos (en este caso, estará completamente cacheada en RAM) más 200-300 MB por usuario (en el caso de Firebird 2.5 SuperClassic). Entonces, el tamaño máximo ideal de RAM es 64 GB, pero dado que queremos economizar, y dado que tenemos SSD rápido, podemos usar tan solo 16 GB.

Algunos usuarios en tal escenario funcionan bien incluso con 8 GB, pero 8 GB es bastante ajustado: en este caso, ninguna otra aplicación debería usarse en el mismo servidor. 16 GB es el mínimo óptimo recomendado.

El precio en Amazon es USD$59.99 x 2 = $120

Riesgos asociados con la RAM

La RAM es más vulnerable a fallos que las CPUs pero menos que los discos. La RAM de grado empresarial tiene mecanismos especiales para reducir la posibilidad de errores, como verificaciones de paridad. ¿Cómo podemos estimar y disminuir el riesgo de fallos de memoria?

Primero, hay métodos para verificar los chips de memoria, y si tales pruebas se pasan con éxito, los chips de RAM funcionarán durante muchos años. Segundo, cuando la RAM falla, generalmente es muy notable: la computadora tiene una pantalla azul de la muerte o un pánico del kernel, o reinicios frecuentes: todos estos síntomas requieren verificación y, en caso de malos resultados, reemplazo de la RAM.

Placa base

La placa base es una parte importante de cualquier computadora. Afortunadamente, las placas base modernas para escritorio son muy fiables, especialmente las que se lanzaron hace 4-5 años - tienen todas las actualizaciones necesarias y son estables. Y - sí, son baratas.

Necesitamos una placa base con soporte RAID, con chip de video integrado, y con suficientes conectores SATA. Algo como esto:

ASUS M5A78L-M Plus/USB3 DDR3 HDMI DVI USB 3.0 760G MicroATX Motherboard

El precio en Amazon es USD$74,99

Tiene reseñas muy positivas, y se configura fácilmente para tener RAID1.

Caja de escritorio

Necesitamos una caja de escritorio para conectar todos los componentes de la computadora, con suficiente fuente de alimentación. Algo como esto: $76,82 http://amzn.to/2ydeYs1

UPS

Lo único que no es parte del servidor, pero debería equipar a toda computadora con datos importantes dentro - fuente de alimentación ininterrumpida (UPS).

El UPS protege una computadora de cortes de energía y fluctuaciones. En nuestra experiencia, una sobretensión o pérdida anormal de energía de la computadora es la principal fuente de corrupción de bases de datos.

Algo como CyberPower CP1200AVR, por $117.97, debería ser suficiente.

Total

Como resultado, tenemos el precio total de todos los componentes de la computadora y el UPS = USD 855,27 - es incluso menos de USD 1000, sin embargo, antes de que estos componentes se conviertan en una computadora funcional, deben ensamblarse, equiparse con sistema operativo y probarse.

Artículo Precio Cant. Total
SSD Samsung 850 Pro 256 Gb MZ-7KE256BW $124,24 2 248,48
Seagate SkyHawk 2TB Surveillance Hard Drive 74,99 2 149,98
CPU AMD FX-8320E $86,02 1 86,02
RAM Corsair Vengeance 8GB $61,99 2 123,98
Placa base ASUS M5A78L-M Plus $57 1 57
Caja de escritorio $69,99 1 69,99
CyberPower CP1200AVR $119.82 1 119,82
Total 855,27

Ensamblaje del servidor

Para ensamblar todas estas piezas en el servidor funcional e instalar allí el sistema operativo (recomendaríamos alguna variante de Linux, como CentOS7+ o Ubuntu Server 16+), todos estos componentes deben ensamblarse/conectarse correctamente.

No es difícil, solo requiere un destornillador, algo de paciencia y tiempo para leer las instrucciones cuidadosamente y ver algunos videos de YouTube. Hace 10 años casi cualquier desarrollador podía ensamblar una computadora con estas piezas, hoy en día es diferente, pero sigue sin ser difícil.

¿Y si no quieres ensamblar el servidor?

Hay un atajo: es posible comprar una computadora con una configuración similar que casi se ajusta a nuestras necesidades, y conectar allí componentes adicionales (es decir, discos).

Recomendaría echar un vistazo a esta computadora - diseñada originalmente como PC de juegos, tiene CPU de 8 núcleos y 16 GB de RAM, y cuesta solo USD$709.

Será necesario equiparla (abrir la caja y conectar) con un par de unidades SSD (+$248,48), una unidad de respaldo adicional (+$74,99) y, por supuesto, un UPS (+119.82). El total será de USD 1153 - es más alto que el objetivo de $1000, principalmente debido a la tarjeta de video y la buena caja de escritorio. Aún necesitas configurar RAID1 (en BIOS) y, por supuesto, instalar allí el sistema operativo del servidor en lugar del Windows 10 Home preinstalado.

Este enfoque se puede usar para convertir una potente computadora de escritorio en un servidor - simplemente agrega allí SSD redundantes y unidades de respaldo.

En el pasado, muchas pymes y startups usaron estos servidores autoensamblados, ahora hay una tendencia a usar máquinas virtuales basadas en la nube.

¿Cómo se comparan las máquinas virtuales con un servidor autoensamblado?

Por supuesto, construir y mantener tu propio servidor requiere algunas habilidades (no tan altas como podría parecer), por lo que muchas empresas quieren deshacerse de todos los servidores de hardware (y, posiblemente, despedir al administrador del sistema responsable de los servidores).

En el próximo artículo, consideraremos una VM en la nube como servidor de base de datos para pymes.

Más artículos sobre el rendimiento de la base de datos Firebird:

  1. Guía de hardware para Firebird
  2. Ajuste de una base de datos Firebird de 1.7 Tb
  3. Servicio de optimización del rendimiento de Firebird
  4. 45 formas de acelerar la base de datos Firebird
  5. Colección de archivos de configuración optimizados de Firebird

Contáctanos

No dudes en hacer cualquier pregunta: [email protected].

Agradecimientos

Muchas gracias a las personas que enviaron sugerencias y mejoras para este artículo:

  • Vlad Khorsun
  • Dmitri Kuzmenko
  • Pavel Zotov
  • Sergey Nikitin
  • Emil Mustea