LAMP no Raspberry Pi 2 - do que ARM CPU + USB é capaz
Farei uma reserva imediatamente, o objetivo não é descobrir os recursos máximos do sistema, mas descobrir o desempenho fundamental dos microcomputadores modernos como servidores Web completos e ajudar a avaliar a competitividade em relação à hospedagem compartilhada. Portanto, este artigo não aborda os problemas de otimização e estuda a carga máxima permitida. Em vez disso, é realizada uma experiência em sites existentes com visitantes reais.Introdução
Provavelmente muitos familiarizados com microcomputadores de famílias comestíveis (framboesa, banana, laranja ...) pensaram em expandir o alcance de seu uso. Originalmente projetados para sistemas domésticos inteligentes e robótica, eles estão se tornando cada vez mais rápidos, mantendo o tamanho. Baixo consumo de energia com maior poder do processador os torna atraentes para uso potencial como servidores da web. Vamos escolher um modelo adequado para isso.Por que o Raspberry Pi 2 modelo B?
Como o ponto mais fraco de tais sistemas, do ponto de vista da hospedagem, é o processador, que tem um desempenho relativo muito baixo (mais sobre isso posteriormente), tentaremos organizar um servidor da Web com uma opção de orçamento, mas que, no entanto, pode se tornar poderoso o suficiente para Nossa tarefa é o Raspberry Pi 2 modelo B. Ele possui um processador de 4 núcleos que opera no modo normal sem resfriamento a 900 Mhz e a capacidade de alterar essa frequência de 700 para 1200 Mhz. Nós não aumentaremos a frequência do relógio, apenas observamos que para “overclocking” você precisará de um radiador e, possivelmente, de um ventilador. Como aconteceu que hoje o Raspberry Pi 2 modelo B tem o processador mais produtivo entre os "colegas de classe", nós o selecionamos para teste.Características técnicas da plataforma em questão
CPU
Temos um processador incomum, a família RISC. Em resumo, podemos dizer que o conjunto de instruções para esse processador é muito menor que o das instruções "comuns", mas executa comandos simples muito rapidamente. Mas para executar instruções complexas, tais comandos simples precisam de muito. Portanto, o relógio alterna mais. Portanto, se alguém pareceu que 4 núcleos de 900 Mhz cada um é mais que suficiente para um servidor da Web, faça uma emenda - o Broadcom BCM2836 Cortex A7 de quatro núcleos para a nossa tarefa não será mais rápido que o antigo Pentium 300-400 Mhz. É verdade que seis vezes supera o modelo single-core anterior no Raspberry Pi e 1,9 vezes à frente do colega de classe dual core no Banana Pi M2 (que, embora anunciado pela presença de SATA e Ethernet gigabit, é muito menos adequado para o servidor da web devido ao seu processador )É precisamente por causa da lentidão do processador central que observamos um baixo consumo recorde de microcomputadores. De acordo com os dados disponíveis, o Raspberry Pi consome de 2 a 3 watts, 4 watts em carga de pico e 1 watts em marcha lenta. Bem, 2-3 watts (5V, 0,4-0,6A), em média, para todo o sistema, com exceção do poder da mídia de armazenamento - é por isso que vale a pena lutar no campo da hospedagem corporativa ou doméstica, que pode torná-lo lucrativo em termos econômicos. pontos de vista.o que pode torná-lo economicamente vantajoso.o que pode torná-lo economicamente vantajoso.Memória
A memória usada não é a mais rápida, é DDR2, mas há uma quantidade suficiente de memória - 1 GB. Devo dizer que essa é uma boa quantia para servidores Web comuns executando o Linux.Interface de rede
Uma interface de rede de 100 megabytes é suficiente para transferência de dados. Não precisamos de mais nada - o subsistema de armazenamento de informações e o processador simplesmente não conseguem lidar com a carga pesada.Armazenamento de dados
Chegamos a um ponto muito interessante - o leitor de cartão integrado permite que o sistema inicialize apenas a partir dele (a menos que você redirecione o gerenciador de inicialização ...), e isso em uma situação normal limita a escolha da operadora principal a um cartão micro SD. A boa notícia é que hoje eles já podem ter um volume significativo e trabalhar rapidamente. Embora já existam deficiências - é improvável que desejemos manter arquivos, bancos de dados, trocas e logs do site, para evitar operação lenta e redução prematura da vida da transportadora. Para fazer isso, teremos outra mídia no barramento USB. Essa abordagem não apenas aumenta o desempenho do sistema, mas também oferece a vantagem da modularidade - é fácil substituir a mídia por outra sobressalente e fazer backups de toda a imagem. A questão é o que exatamente queremos usar como meio externo - um disco SSD, HDD ou um cartão de memória rápido.Aqui, todo mundo decide por si mesmo, muito depende da natureza dos sites hospedados. Deve-se lembrar que o Raspberry Pi 2 usa o padrão USB 2.0, que limita nosso subsistema de arquivos na velocidade de transferência de dados.Neste exemplo, como dispositivo externo, consideraremos uma opção relativamente lenta para a gravação - este é um leitor de cartão USB com um cartão SD de formato completo Lexar Professional conectado, o que permite gravar dados a uma velocidade de apenas 15 Mb / s com esta conexão. Embora (no caso geral), velocidades de mídia acima de 100 megabits para leitura e gravação não sejam importantes para nós, uma vez que a comunicação com o mundo externo é limitada por esse número. Ao usar subsistemas de disco, pense no consumo de energia deles. O Winchester 2,5 "consome ~ 5 watts e provavelmente exigirá uma fonte de alimentação separada. Você também deve se lembrar da organização específica de entrada e saída do Raspberry via USB, obviamente, temos mais um gargalo:
Portanto, a mídia de teste:" Interna ": MicoSD 8Gb classe 10Externo: SD 32Gb classe 10+ (UHS)Instalação e composição do LAMP
O sistema deve ser simples, mas tem funcionalidade completa. Portanto, um requisito é nada mais, mas apenas o Apache se oculta atrás do Nginx, pois a memória permite.sistema operacional
O Minibian é instalado na mídia “interna” a partir da imagem 2015-02-18-wheezy-minibian.img.Este é o Debian 7.8, no mínimo, para Raspberry. Nós fazemos uma reserva, no repositório padrão eles esperam PHP não superior a 5.5 e Apache não superior a 2.2. Essa não é uma restrição irritante, mas para este artigo é útil verificar a possibilidade de usar as versões mais recentes. Para instalar o PHP 5.6.xe Apache 2.4.x, que não estão incluídos no repositório padrão, tive que mudar a fonte da 8ª versão do Raspbian, o sistema após a atualização do apt-get começou a ter a versão 8.0.Apache
Versão 2.4.10 (Raspbian). O gzip está ativado, todos os módulos mais usados da distribuição padrão estão conectados, incluindo mod_rewrite, mod_cache ..., sem contar os que estão ativados por padrão.Php
5.6.12-0 + deb8u1 (cli). Executa no Apache como prefork. Existem php-curl, php-gd e outras bibliotecas populares.MySQL
5.5.44-0 + deb8u1 - (Raspbian).Nginx
Nginx / 1.6.2. O Nginx é responsável pela estática. Compactação Gzip está incluída.Deixe-me lembrá-lo de que todos os logs são gravados em mídia externa, o banco de dados MySQL está lá, o swap não está desativado, mas vazio durante todo o tempo de teste.Como utilitários auxiliares, uso PhpMyAdmin, htop, iostat e webmin. O Exim4 está instalado, mas apenas para enviar mensagens de formulários. Como você pode ver, nosso servidor é bastante moderno e funcional. Vou decepcionar os fãs do painel de controle VESTA - infelizmente, o fabricante não suporta processadores ARM e não fará isso em um futuro próximo. Portanto webmin.Teste
Eu não iria imediatamente fazer nenhum teste sintético, uma vez que eles são mais prováveis do campo de uma teoria muito distante. Na prática, tudo depende fortemente da natureza dos sites hospedados, da distribuição de carga por hora, do canal de comunicação, do número de visualizações, do tempo dos visitantes do site ... e das configurações. Em outras palavras, proponho ver o que realmente acontece nos sites existentes.Os sites testados não são baseados em nenhum CMS, mas usam a exibição de imagens do banco de dados em páginas dinâmicas (PHP), para que possa haver uma carga bastante intensa no MySQL. Mas não há conexões AJAX. Como nossa hospedagem ainda não afirma ser profissional, é considerado suficiente para o teste colocar 16 sites ativos com pouco tráfego, dos quais cerca de cinco são cerca de 100 a 200 pessoas por dia, o restante não passa de 50 visitantes para o mesmo Tempo. No total - cerca de 800 a 900 pessoas por dia, o que é comparável em termos de carga aceitável com hospedagem compartilhada barata. Metade dos visitantes cai à noite, as principais visitas acontecem de 20 a 22 horas (~ 300 pessoas em duas horas, em média 4 visualizações = 10 visualizações por minuto a ~ 700 kb cada = 116 kilobytes de tráfego por segundo).Designaremos esse horário como “hora do rush” e, ao mesmo tempo, realizaremos testes. Haverá apenas dois tipos de testes - avaliação de desempenho usando serviços de terceiros e um relatório dos utilitários htop, iostat, sobre trabalho real.1. O tempo de geração e carregamento pelo usuário das páginas nos "horários de pico"
Usamos apenas dois parâmetros principais - tempo de geração e tempo de carregamento da página, para dois tipos de páginas - “pesado” (pesado para o processador, porque há muitas fotos do MySQL, geração longa) e “leve” (página PHP dinâmica normal). Repetiremos cada teste 10 vezes para reduzir a probabilidade de um resultado aleatório e também usaremos serviços diferentes.Deixe-me lembrá-lo sobre a geografia dos servidores de teste e sobre a possível carga de trabalho deles. Portanto, os resultados absolutos podem variar bastante, isso é normal. Repeti medições com interrupções de 5 a 10 minutos para obter diferentes tempos de carregamento dos serviços. O canal do Raspberry testado é a óptica de gigabit, a geografia é a Sibéria, 150 megabits garantidos para Moscou. Para verificar a capacidade do servidor de atender a várias conexões simultâneas, o teste foi iniciado simultaneamente nos seguintes sites de serviço:Página light (547 kb, sem acesso ao MySQL)
PingDom.com, Suécia
Tempo de carregamento da página (46 solicitações): mínimo - 925 ms, máximo - 1124 ms, média - 955 ms.Google PageSpeed Insights
Não há queixas sobre velocidade.Sitespeed.ru
Tempo total de carregamento da página 3.9-4.2, média 4.0. Tempo de geração de páginas de 139 a 157, em média 145 ms. É por isso que o Google não tem reclamações - chegamos aos 200 ms permitidos.Página `Pesada '(843 kb, incluindo 38 fotos de 10 a 15 kb do MySQL)
PingDom.com, Suécia
Tempo de carregamento da página (85 solicitações): mínimo - 946 ms, máximo - 1001 ms, média - 973 ms.Google PageSpeed Insights
Não há queixas sobre velocidade.Sitespeed.ru
Tempo total de carregamento da página 5,3-4,2, média 4,0. Tempo de geração de página de 158 a 169, média de 162 ms.2. Relatório do utilitário htop
Como esperado, o Htop mostrou que o principal consumidor do tempo da CPU são os processos mysql. Eles "comeram" 98 minutos a partir do último dia de tempo do processador. O que não é surpreendente - as consultas frequentes e "pesadas" à base foram inicialmente feitas por nós. Se as imagens estivessem no cache nginx, teríamos um ganho de desempenho, mas o teste é interessante porque modela o aumento de carga no MySQL com uma margem, o que, a propósito, é típico para a maioria dos CMS.3. Relatório do utilitário iostat
Esse utilitário mostrou velocidades médias de leitura e gravação na mídia:1. Mídia “interna” (sistema) - leitura média de 0,87 kb / s, gravação média de 15,5 kb / s (provavelmente devido ao cache do nginx, há algo a melhorar na configuração).2. Mídia “externa” (sites, logs, bancos de dados) - leitura de 2,4 kb / se gravação de 3 kb / s (tudo está bem aqui, a leitura é armazenada em cache e os registros são gravados).4. alocação de CPU
Distribuição do tempo da CPU por htop, amostragem - exatamente dois dias de trabalho (~ 1600 visitantes únicos atendidos de acordo com as métricas do Yandex):mysql 6,8%htop 1,8%nginx 0,75%apache2 <0,3%Por quase o resto do tempo, o processador descansou.Como resultado, temos uma grande margem para o tempo livre do processador, uma margem para aumentar a frequência do processador, uma margem para a velocidade da mídia de gravação. Existem muitas otimizações disponíveis para configurar os dois programas de servidor (colocando o cache nginx em uma mídia separada, por exemplo) e os próprios sites. Tudo junto - um bom potencial para aumentar a produtividade geral.Total
Nosso visitante virtual gostou da velocidade do servidor da web no microcomputador, apesar de haver outras visitas simultâneas. Assim, apesar dos gargalos (USB e processador), temos uma conclusão muito óbvia - um servidor Web completo no Raspberry Pi 2 modelo B é real. Tanto em software quanto em parâmetros técnicos. Com base na carga de trabalho muito baixa na opção considerada, assumirei que ele poderá atender rapidamente pelo menos alguns milhares de visitantes ao (s) site (s) médio (s) por dia.O multiprocessamento ajuda a lidar com as solicitações mais rapidamente, há memória suficiente para armazenar em cache, a transferência de dados via USB é satisfatória, para que o servidor do bebê possa não apenas economizar energia, mas também fazer rápida (mais barata!) A substituição de equipamentos com falha. Esse sistema pode pagar por si próprio quando usado em uma rede corporativa como servidor corporativo (servidor de banco de dados, servidor web, servidor de backup, compartilhamento de arquivos) em comparação com outras soluções populares. E certamente seja uma alternativa à hospedagem virtual nas mãos certas. Por exemplo, em uma fonte de alimentação ininterrupta de orçamento, um microcomputador emparelhado com um roteador pode funcionar por horas; portanto, a questão de uma curta (e não tão) falta de energia pode ser nivelada em casa,se o site do provedor também tiver UPS. E você também pode controlar a eletricidade, dar comandos para vários dispositivos, conectar uma câmera de vídeo e vários sensores ...Experimente, experimente, microcomputadores - não é apenas barato, mas também agradavelmente silencioso ... Source: https://habr.com/ru/post/pt384209/
All Articles