LAMP en Raspberry Pi 2: de lo que ARM CPU + USB es capaz
Haré una reserva de inmediato, el objetivo no es descubrir las capacidades máximas del sistema, sino conocer el rendimiento fundamental de las microcomputadoras modernas como servidores web completos y ayudar a evaluar la competitividad con respecto al alojamiento compartido. Por lo tanto, este artículo no aborda los problemas de optimización y el estudio de la carga máxima permitida. En cambio, se realiza un experimento en sitios existentes con visitantes reales.Introducción
Probablemente, muchos de los que están familiarizados con los microordenadores de familias comestibles (Frambuesa, Plátano, Naranja ...) pensaron en ampliar el alcance de su uso. Originalmente diseñados para sistemas domésticos inteligentes y robótica, se están volviendo cada vez más rápidos mientras mantienen el tamaño. El bajo consumo de energía con una mayor potencia del procesador los hace atractivos para su uso potencial como servidores web. Elija un modelo adecuado para esto.¿Por qué es el Raspberry Pi 2 modelo B?
Dado que el punto más débil de tales sistemas desde el punto de vista del host es el procesador, que tiene un rendimiento relativo muy bajo (más sobre eso más adelante), intentaremos organizar un servidor web con una opción de presupuesto, pero que, sin embargo, puede resultar lo suficientemente potente para nuestra tarea es el Raspberry Pi 2 modelo B. Tiene un procesador de 4 núcleos que funciona en modo normal sin enfriamiento a 900 Mhz y la capacidad de cambiar esta frecuencia de 700 a 1200 Mhz. No aumentaremos la frecuencia del reloj, solo notamos que para “overclocking” necesitará un radiador y, posiblemente, un ventilador. Como sucedió que hoy el Raspberry Pi 2 modelo B tiene el procesador más productivo entre los "compañeros de clase", lo seleccionamos para la prueba.Características técnicas de la plataforma en cuestión.
UPC
Tenemos un procesador inusual, la familia RISC. En resumen, podemos decir que el conjunto de instrucciones para tal procesador es mucho más pequeño que el de los "ordinarios", pero ejecuta comandos simples muy rápidamente. Pero para ejecutar instrucciones complejas, tales comandos simples necesitan mucho. Por lo tanto, el reloj realiza más ciclos. Entonces, si a alguien le parece que 4 núcleos de 900 Mhz cada uno es más que suficiente para un servidor web, entonces debe hacer una enmienda: Broadcom BCM2836 quad core Cortex A7 para nuestra tarea no será más rápido que el antiguo Pentium 300-400 Mhz. Es cierto, 6 veces más que el modelo anterior de un solo núcleo en la Raspberry Pi, y 1,9 veces por delante del compañero de clase de doble núcleo en el Banana Pi M2 (que, aunque se anuncia por la presencia de SATA y Gigabit Ethernet, es mucho menos adecuado para el servidor web debido a su procesador )Es precisamente debido a la lentitud del procesador central que observamos un bajo consumo récord de microcomputadoras. Según los datos disponibles, la Raspberry Pi consume de 2 a 3 vatios, 4 vatios en la carga máxima, 1 vatios en inactivo. Bueno, 2-3 vatios (5V, 0.4-0.6A) en promedio para todo el sistema, con la excepción de la potencia de los medios de almacenamiento: esto es por lo que vale la pena luchar en el campo del alojamiento web corporativo o doméstico, que puede hacer que sea rentable con puntos de vista.lo que puede hacerlo económicamente ventajoso.lo que puede hacerlo económicamente ventajoso.Memoria
La memoria utilizada no es la más rápida, es DDR2, pero hay una cantidad suficiente de memoria: 1 GB. Debo decir que esta es una buena cantidad para los servidores web comunes que ejecutan Linux.Interfaz de red
Una interfaz de red de 100 megabytes es suficiente para la transferencia de datos. No necesitamos nada más: el subsistema de almacenamiento de información y el procesador simplemente no pueden hacer frente a la gran carga.Almacenamiento de datos
Pasamos a un punto muy interesante: el lector de tarjetas incorporado permite que el sistema arranque solo desde él (a menos que redirija el cargador de arranque ...), y esto en una situación normal limita la elección del operador principal a una tarjeta micro SD. La buena noticia es que hoy ya pueden tener un volumen significativo y funcionar rápidamente. Aunque ya existen deficiencias, es poco probable que queramos mantener archivos de sitios web, bases de datos, intercambios y registros, para evitar una operación lenta y una reducción prematura de la vida útil del operador. Para hacer esto, tendremos otros medios en el bus USB. Este enfoque no solo aumentará el rendimiento del sistema, sino que también dará la ventaja de la modularidad: es fácil reemplazar el medio por uno de repuesto y hacer copias de seguridad de toda la imagen. La pregunta es qué es exactamente lo que queremos usar como medio externo: un disco SSD, HDD o una tarjeta de memoria rápida.Aquí, todos deciden por sí mismos, mucho depende de la naturaleza de los sitios alojados. Debe recordarse que Raspberry Pi 2 utiliza el estándar USB 2.0, que limita nuestro subsistema de archivos en la velocidad de transferencia de datos.En este ejemplo, como dispositivo externo, consideraremos una opción relativamente lenta para grabar: este es un lector de tarjetas USB con una tarjeta SD de formato completo Lexar Professional conectada, que le permite grabar datos a una velocidad de solo 15Mb / s con esta conexión. Aunque (en el caso general), las velocidades de los medios superiores a 100 megabits para leer y escribir no serán importantes para nosotros, ya que la comunicación con el mundo exterior está limitada por esta cifra. Cuando use subsistemas de disco, debe pensar en su consumo de energía. Winchester 2.5 "consume ~ 5 vatios y probablemente requerirá una fuente de alimentación separada. También debe recordar acerca de la organización específica de entrada-salida a Raspberry a través de USB, obviamente, tenemos un cuello de botella más:
Entonces, el medio de prueba:" Interno ": MicoSD 8Gb clase 10Externo: SD 32Gb clase 10+ (UHS)Instalación y composición de LAMP
El sistema debe ser simple, pero tener una funcionalidad completa. Por lo tanto, un requisito es nada más, pero solo Apache se esconderá detrás de Nginx, ya que la memoria lo permite.sistema operativo
Minibian se instala en los medios "internos" de la imagen 2015-02-18-wheezy-minibian.img.Este es Debian 7.8 como mínimo para Raspberry. Hacemos una reserva, en el repositorio estándar esperan PHP no superior a 5.5 y Apache no superior a 2.2. Esta no es una restricción molesta, pero para este artículo es útil verificar la posibilidad de usar las últimas versiones. Para instalar PHP 5.6.xy Apache 2.4.x, que no están incluidos en el repositorio estándar, tuve que cambiar la fuente de la octava versión de Raspbian, el sistema después de la actualización de apt-get comenzó a tener la versión 8.0.apache
Versión 2.4.10 (Raspbian). Gzip está habilitado, todos los módulos más utilizados de la distribución estándar están conectados, incluidos mod_rewrite, mod_cache ..., sin contar los que están habilitados de forma predeterminada.Php
5.6.12-0 + deb8u1 (cli). Se ejecuta en Apache como prefork. Hay php-curl, php-gd y otras bibliotecas populares.MySQL
5.5.44-0 + deb8u1 - (Raspbian).Nginx
Nginx / 1.6.2. Nginx es responsable de la estática. La compresión Gzip está incluida.Permítame recordarle que todos los registros están escritos en medios externos, la base de datos MySQL está allí, el intercambio no está desactivado, pero está vacío durante todo el tiempo de prueba.Como utilidades auxiliares utilizo PhpMyAdmin, htop, iostat y webmin. Exim4 está instalado, pero solo para enviar mensajes desde formularios. Como puede ver, nuestro servidor es bastante moderno y funcional. Decepcionaré a los fanáticos del panel de control VESTA; desafortunadamente, el fabricante no es compatible con los procesadores ARM y no lo hará en el futuro cercano. Por lo tanto webmin.Pruebas
No iba a hacer ninguna prueba sintética de inmediato, ya que son más probables en el campo de una teoría muy distante. En la práctica, todo depende en gran medida de la naturaleza de los sitios alojados, de la distribución de la carga por tiempo, del canal de comunicación, del número de visitas, del tiempo de los visitantes del sitio ..., así como de la configuración. En otras palabras, propongo ver lo que realmente resulta en los sitios existentes.Los sitios web probados no se basan en ningún CMS, pero utilizan la visualización de imágenes de la base de datos en páginas dinámicas (PHP), por lo que puede haber una carga bastante intensa en MySQL. Pero no hay conexiones AJAX en absoluto. Dado que nuestro alojamiento aún no pretende ser profesional, se considera suficiente para que la prueba coloque 16 sitios activos con poco tráfico, de los cuales aproximadamente cinco son aproximadamente 100-200 personas por día, el resto no son más de 50 visitantes por lo mismo hora. En total, alrededor de 800-900 personas por día, lo que es comparable en términos de carga aceptable con alojamiento compartido económico. La mitad de los visitantes caen por la noche, las visitas principales ocurren a las 20-22 horas (~ 300 personas en dos horas, en promedio 4 vistas = 10 vistas por minuto a ~ 700 kb cada una = 116 kilobytes de tráfico por segundo).Designaremos esta hora "hora pico" y al mismo tiempo realizaremos las pruebas. Solo habrá dos tipos de pruebas: evaluación de rendimiento utilizando servicios de terceros y un informe de utilidades htop, iostat en el trabajo real.1. El tiempo de generación y carga por parte del usuario de las páginas en las "horas pico"
Utilizamos solo dos parámetros principales: tiempo de generación de página y tiempo de carga de página, para dos tipos de páginas: "pesado" (pesado para el procesador, porque hay muchas imágenes de MySQL, larga generación) y "ligero" (página PHP dinámica normal). Repetiremos cada prueba 10 veces para reducir la probabilidad de un resultado aleatorio, y también utilizaremos diferentes servicios.Permítame recordarle la geografía de los servidores de prueba y su posible carga de trabajo. Por lo tanto, los resultados absolutos pueden variar mucho, esto es normal. Hice mediciones repetidas con interrupciones de 5 a 10 minutos para entrar en diferentes tiempos de carga de los servicios. El canal del Raspberry probado es óptica de gigabits, la geografía es Siberia, 150 megabits garantizados a Moscú. Para verificar la capacidad del servidor de servir varias conexiones simultáneas, las pruebas se lanzaron simultáneamente en los siguientes sitios de servicio:Página ligera (547 kb, sin acceso a MySQL)
PingDom.com, Suecia
Tiempo de carga de la página (46 solicitudes): mínimo - 925 ms, máximo - 1124 ms, promedio - 955 ms.Google PageSpeed Insights
No hay quejas sobre la velocidad.Sitespeed.ru
Tiempo total de carga de la página 3.9-4.2, promedio 4.0. Tiempo de generación de páginas de 139 a 157, promedio de 145 ms. Es por eso que Google no tiene quejas: entramos en los 200 ms permitidos.Página `pesada` (843 kb, incluidas 38 imágenes de 10-15 kb de MySQL)
PingDom.com, Suecia
Tiempo de carga de la página (85 solicitudes): mínimo - 946 ms, máximo - 1001 ms, promedio - 973 ms.Google PageSpeed Insights
No hay quejas sobre la velocidad.Sitespeed.ru
Tiempo total de carga de la página 5.3-4.2, promedio 4.0. Tiempo de generación de páginas de 158 a 169, promedio de 162 ms.2. Informe de la utilidad htop
Como se esperaba, Htop demostró que el principal consumidor de tiempo de CPU son los procesos mysql. "Comieron" 98 minutos desde el último día de tiempo del procesador. Lo que no es sorprendente: las consultas frecuentes y "pesadas" a la base se suponían inicialmente de nuestra parte. Si hubiera imágenes en el caché nginx, tendríamos una ganancia de rendimiento, pero la prueba es interesante porque modela la carga aumentada en MySQL con un margen, que, por cierto, es típico para la mayoría de los CMS.3. Informe de la utilidad iostat
Esta utilidad mostró velocidades promedio de lectura y escritura en los medios:1. Medios "internos" (sistema): lectura promedio de 0.87 kb / s, grabación promedio de 15.5 kb / s (probablemente debido al almacenamiento en caché nginx, hay algo que mejorar en configuración).2. Medios "externos" (sitios, registros, bases de datos): lectura de 2,4 kb / sy escritura de 3 kb / s (todo está bien aquí, la lectura se almacena en caché, los registros se escriben).4. asignación de CPU
Distribución del tiempo de CPU por htop, muestreo: exactamente dos días de trabajo (~ 1600 visitantes únicos atendidos según las métricas de Yandex):mysql 6.8%htop 1.8%nginx 0.75%apache2 <0.3%Durante casi el resto del tiempo, el procesador descansó.Como resultado, tenemos un amplio margen para el tiempo de procesador libre, un margen para aumentar la frecuencia del procesador, un margen para la velocidad de los medios de grabación. Hay muchas optimizaciones disponibles para configurar ambos programas de servidor (por ejemplo, poner el caché nginx en un medio separado) y los sitios en sí. Todos juntos: un buen potencial para aumentar la productividad general.Total
A nuestro visitante virtual le gustó la velocidad del servidor web en la microcomputadora, a pesar de que hubo otras visitas simultáneas. Por lo tanto, a pesar de los cuellos de botella (USB y procesador), tenemos una conclusión muy obvia: un servidor web completo en el modelo B de Raspberry Pi 2 es real. Tanto en software como en parámetros técnicos. Basado en la carga de trabajo muy baja en la opción considerada, supondré que podrá atender rápidamente al menos a un par de miles de visitantes en el sitio (s) promedio por día.El multiprocesamiento ayuda a hacer frente a las solicitudes más rápido, hay suficiente memoria para el almacenamiento en caché, la transferencia de datos a través de USB es satisfactoria, por lo que el servidor para bebés no solo puede ahorrar en electricidad, sino que también hace un reemplazo rápido (¡más económico!) Del equipo fallido. Dicho sistema puede pagarse por sí mismo cuando se usa en una red empresarial como servidor corporativo (servidor de bases de datos, servidor web, servidor de respaldo, uso compartido de archivos) en comparación con otras soluciones populares. Y sin duda será una alternativa al alojamiento virtual en las manos adecuadas. Por ejemplo, con un presupuesto de suministro de energía ininterrumpible, un microordenador emparejado con un enrutador puede funcionar durante horas, por lo que la cuestión de un corte de energía corto (y no tan) se puede nivelar en el hogar,si el sitio del proveedor también tiene UPS. Y también puede controlar la electricidad, dar comandos a varios dispositivos, conectar una cámara de video y varios sensores ...Pruebe, experimente, microcomputadoras: no solo es económico, sino también agradablemente silencioso ... Source: https://habr.com/ru/post/es384209/
All Articles