GUIA DO PROJETO / METODOLOGIA E CONTEXTO
Por trás dos
benchmarks.
O que os testes medem, de onde vêm os números e como interpretá-los.
Introdução
Framework Benchmarks compara stacks web em tarefas comuns: serialização JSON, acesso ao banco, leituras em cache e HTML renderizado no servidor. O projeto começou em março de 2013 e cresce com implementações da comunidade. A TechEmpower publica rodadas de resultados; a Better Web mantém este portal independente e o fork.
Motivação
Desempenho influencia capacidade de hospedagem, custo de infraestrutura e tempo de resposta. Medir a stack pode revelar limites antes de aumentar a complexidade da arquitetura. As tarefas sintéticas ajudam na investigação; testes específicos da aplicação e necessidades de desenvolvimento completam a decisão.
01 / AMBIENTE
O hardware mudou.
Leia cada rodada no seu contexto.
A suíte original separa servidor de aplicação, servidor de banco e gerador de carga. Ambientes físicos e de nuvem evoluíram separadamente.
RODADAS 23 →Citrine / 40 GbE
Três servidores HPE ProLiant DL360 Gen10 Plus; Xeon Gold 6330 a 2 GHz, 56 núcleos conforme descrição original, 64 GB de RAM, SSD enterprise e rede ConnectX-6 de 40 Gbps. Fornecidos pela Microsoft.
RODADAS 16–22Citrine / 10 GbE
Servidores Dell R440 com Xeon Gold 5120, 32 GB de RAM, SSD enterprise e switch Cisco dedicado de 10 Gbps. Fornecidos pela Microsoft.
RODADAS 13–15ServerCentral
Servidor de aplicação Dell R910 com quatro Xeon E7-4850 de 10 núcleos; servidor de banco Dell R710 com dois Xeon E5520 de 4 núcleos; Ethernet de 10 Gbps.
RODADAS 9–12Peak Hosting
Dell R720xd, dois Xeon E5-2660 v2 (40 threads), 32 GB de RAM, SSDs em RAID para bancos e rede de 10 Gbps.
RODADAS 1–8Office i7
Estações Core i7-2600K, 8 GB de RAM e Ethernet gigabit; SSD Samsung 840 Pro no banco a partir da rodada 5.
RODADAS 13 →Azure
Instâncias Azure D3v2 e Ethernet gigabit conforme o guia original. A disponibilidade varia por rodada.
RODADAS 1–12AWS
EC2 c3.large com 2 vCPUs; m1.large até a rodada 9. Ethernet gigabit.
Especificações originais do ambiente ↗02 / O PROCEDIMENTO
Configure. Valide. Aqueça. Meça.
- Reinicie os bancos e inicie a aplicação escolhida.
- Execute uma preparação curta para confirmar que o servidor responde.
- Aqueça a inicialização e a compilação JIT antes da medição.
- Meça nos níveis publicados de concorrência ou quantidade de consultas usando wrk.
- Registre vazão, latência, erros e resultados de validação.
- Pare a aplicação antes de passar à próxima implementação.
Os dados da rodada 23 contêm concorrência 16, 32, 64, 128, 256 e 512; plaintext 256, 1.024, 4.096 e 16.384; consultas 1, 5, 10, 15 e 20. Os níveis e a duração históricos são lidos de cada fotografia.
Requisitos das sete cargas ↗03 / TERMINOLOGIA
Um vocabulário comum.
- framework
- Stack HTTP usada para construir aplicações web, de uma plataforma a um framework micro ou fullstack.
- platform
- Camada de execução ou servidor abaixo do framework, como Netty, Servlet ou Rack.
- permutation
- Uma combinação de linguagem, framework, runtime, banco e configuração.
- test type
- Uma carga como JSON, acesso ao banco ou renderização de templates.
- test
- Medição de uma implementação executando uma carga.
- implementation
- Código e configuração da aplicação que atendem aos requisitos da carga.
- toolset
- Executor Python e utilitários que preparam, verificam e medem implementações.
- run
- Uma execução completa ou parcial da suíte.
- preview
- Captura intermediária de resultados revisada pelos colaboradores.
- round
- Publicação de resultados da TechEmpower. Uma rodada é diferente de uma fotografia do repositório.
04 / PERGUNTAS E INTERPRETAÇÃO
Antes de escolher uma stack.
Como devo escolher um framework?
Use desempenho junto de linguagem, experiência da equipe, manutenção, documentação e suporte. Valide as opções com a carga e o hardware da sua aplicação.
Por que comparar plataformas e frameworks fullstack?
Eles mostram custos diferentes de abstração. Filtre por classe, banco, ORM e plataforma para comparar stacks semelhantes; a tabela completa é propositalmente ampla.
O que significam Realistic e Stripped?
Realistic busca uma configuração de produção de uso geral. Stripped é configurada ou construída para o benchmark e pode ser inadequada como ponto de partida para produção. Stripped começa oculta, como no visualizador original.
O que significa Não concluiu?
A implementação não concluiu a carga com sucesso ou não passou na validação exigida. O teste aparece como falha, sem receber uma pontuação de desempenho. Consulte os logs para investigar.
Por que alguns testes ou variantes estão ausentes?
As cargas disponíveis e implementações mudam entre rodadas. Uma configuração presente no repositório atual não significa que ela foi medida numa publicação histórica.
Posso comparar rodadas diretamente?
Hardware, rede, versões de software e implementações mudam com o tempo. Trate cada rodada e ambiente como um experimento separado. Este portal não combina rodadas numa pontuação única.
Como vazão e latência são apresentadas?
A vazão publicada usa a duração da rodada e a quantidade de requisições após descontar erros de conexão, leitura, escrita e HTTP 5xx. A latência vem da mesma amostra selecionada. Escolha a quantidade nas cargas de consulta; nas cargas de concorrência, confira todos os níveis e a melhor amostra.
Por que importações locais são marcadas como aproximadas?
A ferramenta local divide totalRequests pelo tempo medido nos timestamps. O visualizador das rodadas usa a duração publicada e desconta erros. São cálculos diferentes, portanto os valores podem divergir.
O que é overhead do framework?
Compara uma implementação com a plataforma base explicitamente declarada, no mesmo teste e ambiente. A porcentagem aqui divide RPS do framework por RPS da base. Não inferimos uma base por nome ou linguagem semelhantes.
Como o executor faz o aquecimento?
O procedimento original descreve preparação de 5 segundos com concorrência 8, aquecimento de 15 segundos com 256 e amostras medidas nos níveis da carga. Preparação e aquecimento não entram nas medições publicadas. Confira as configurações ao reproduzir uma execução.
Amostras de 15 segundos são representativas?
A suíte equilibra o tempo de medição com muitas implementações. Uma execução sintética curta não representa todas as aplicações longas, padrões de GC ou JIT. Amplie a duração e repita as execuções na sua investigação.
O que o wrk faz?
wrk é o gerador de carga HTTP com múltiplas threads. Ele envia requisições durante a duração configurada e registra quantidades, latência e erros. A saturação do gerador ou da rede pode limitar a vazão observada.
São usados caches e proxies reversos?
Consultas em cache são uma carga separada com requisitos próprios. Os testes comuns de banco devem executar as operações exigidas. Respostas servidas por cache reverso externo sem executar a aplicação mudariam o objeto da medição.
E pooling, logs e uso de CPU?
As expectativas originais incluem pool de conexões e configurações que utilizem os recursos de CPU disponíveis. Os logs da aplicação geralmente ficam desativados. Revise cada implementação em vez de presumir todos os padrões de produção.
Por que versões ou configurações estão desatualizadas?
A suíte evolui com contribuições da comunidade. Relate problemas com um exemplo reproduzível ou envie uma alteração com resultados de verificação. Uma rodada publicada continua sendo uma fotografia histórica depois de atualizar o repositório.
Como adiciono um framework ou teste?
Comece pelos requisitos da carga, contribua uma implementação e valide com o executor. Use o fork para mudanças da Better Web e o projeto original para mudanças destinadas às rodadas oficiais da TechEmpower.
Onde colaboradores podem ver execuções contínuas?
TFB Status publica execuções contínuas e logs. Eles ajudam a diagnosticar contribuições e são diferentes das rodadas oficiais publicadas.
Onde estão as rodadas 1 e 2?
O visualizador original começa os dados históricos na rodada 3 porque os primeiros formatos e identificadores mudaram. As duas primeiras publicações continuam disponíveis nos artigos da TechEmpower abaixo.
05 / RODADAS ANTERIORES
O arquivo de publicações.
Abra os dados publicados disponíveis no novo visualizador. Os dados de nuvem das rodadas 12 e 14 estavam indisponíveis na origem durante a coleta; a publicação original continua vinculada.
Rodada 1 · março de 2013 ↗Rodada 2 · abril de 2013 ↗
06 / CÓDIGO E COMUNIDADE
Inspecione. Melhore.
Este guia reorganiza e resume as informações originais do projeto TechEmpower. Dados publicados e especificações históricas são atribuídos à TechEmpower. Consulte a documentação original para requisitos completos e atuais. Site original ↗