H2o: Por que a água é tão rápida?

Criado em 10 nov. 2017  ·  6Comentários  ·  Fonte: h2o/h2o

Estou aprendendo por que a água é rápida.

  1. O que "Ao contrário da maioria dos analisadores, é sem estado e não aloca memória por si só. Tudo o que faz é aceitar o ponteiro para o buffer e a estrutura de saída e configura os ponteiros no último para apontar para as partes necessárias do buffer." quer dizer?

Quando leio o ppt ou leio o "leia-me" do git, ele diz "rápido" porque é "Ao contrário da maioria dos analisadores, é sem estado e não aloca memória por si mesmo. Tudo o que faz é aceitar o ponteiro para o buffer e a estrutura de saída e configurações os ponteiros no último apontam para as partes necessárias do buffer. "
Eu não entendo o que isso significa. Eu ficaria muito grato se você explicar em detalhes.

Eu realmente apreciaria se você me avisasse.

Comentários muito úteis

meus resultados de benchmark seige em uma instância Uplcoud de 2 GB usando conexões LAN

Comando - siege -v -d1 -c250 -i -f siege.txt

siege.txt tem 65 urls (todos armazenados em cache e servidos pelo próprio servidor)

h2o

Transações: 12.766 hits
Disponibilidade: 99,86%
Tempo decorrido: 35,62 segundos
Dados transferidos: 580,61 MB
Tempo de resposta: 0,67 segundos
Taxa de transação: 358,39 trans / s
Taxa de transferência: 16,30 MB / s
Simultaneidade: 240.01
Transações bem-sucedidas: 12766
Transações com falha: 18
Transação mais longa: 4,64
Transação mais curta: 0,00

nginx

Transações: 9.909 hits
Disponibilidade: 99,77%
Tempo decorrido: 34,35 segundos
Dados transferidos: 455,19 MB
Tempo de resposta: 0,84 segundos
Taxa de transação: 288,47 trans / s
Taxa de transferência: 13,25 MB / s
Simultaneidade: 242,80
Transações bem-sucedidas: 9905
Transações com falha: 23
Transação mais longa: 8,84
Transação mais curta: 0,00

Caddy

Transações: 12145 hits
Disponibilidade: 99,44%
Tempo decorrido: 35,07 segundos
Dados transferidos: 635,66 MB
Tempo de resposta: 0,69 segundos
Taxa de transação: 346,31 trans / s
Taxa de transferência: 18,13 MB / s
Simultaneidade: 239,72
Transações bem-sucedidas: 11813
Transações com falha: 69
Transação mais longa: 1,97
Transação mais curta: 0,00

Todos 6 comentários

meus resultados de benchmark seige em uma instância Uplcoud de 2 GB usando conexões LAN

Comando - siege -v -d1 -c250 -i -f siege.txt

siege.txt tem 65 urls (todos armazenados em cache e servidos pelo próprio servidor)

h2o

Transações: 12.766 hits
Disponibilidade: 99,86%
Tempo decorrido: 35,62 segundos
Dados transferidos: 580,61 MB
Tempo de resposta: 0,67 segundos
Taxa de transação: 358,39 trans / s
Taxa de transferência: 16,30 MB / s
Simultaneidade: 240.01
Transações bem-sucedidas: 12766
Transações com falha: 18
Transação mais longa: 4,64
Transação mais curta: 0,00

nginx

Transações: 9.909 hits
Disponibilidade: 99,77%
Tempo decorrido: 34,35 segundos
Dados transferidos: 455,19 MB
Tempo de resposta: 0,84 segundos
Taxa de transação: 288,47 trans / s
Taxa de transferência: 13,25 MB / s
Simultaneidade: 242,80
Transações bem-sucedidas: 9905
Transações com falha: 23
Transação mais longa: 8,84
Transação mais curta: 0,00

Caddy

Transações: 12145 hits
Disponibilidade: 99,44%
Tempo decorrido: 35,07 segundos
Dados transferidos: 635,66 MB
Tempo de resposta: 0,69 segundos
Taxa de transação: 346,31 trans / s
Taxa de transferência: 18,13 MB / s
Simultaneidade: 239,72
Transações bem-sucedidas: 11813
Transações com falha: 69
Transação mais longa: 1,97
Transação mais curta: 0,00

Quando leio o ppt ou leio o "leia-me" do git, ele diz "rápido" porque é "Ao contrário da maioria dos analisadores, é sem estado e não aloca memória por si mesmo. Tudo o que faz é aceitar o ponteiro para o buffer e a estrutura de saída e configurações os ponteiros no último apontam para as partes necessárias do buffer. "
Eu não entendo o que isso significa. Eu ficaria muito grato se você explicar em detalhes.

Isso significa que quando o H2O recebe uma solicitação, o próprio analisador HTTP não aloca nenhuma memória além da necessária para receber a solicitação. O analisador HTTP / 1 que H2O usa é picohttpparser, ele tem seu próprio repositório: https://github.com/h2o/picohttpparser . A fonte é pequena o suficiente e possui pequenos testes https://github.com/h2o/picohttpparser/blob/master/test.c que demonstram seu uso.

@sudarsha Estes são os resultados para HTTP / 2?

@ xm74 parece que não, porque _siege_ ainda não suporta HTTP / 2.

Siege não apóia isso. h2load tem, mas eu não tenho tempo para configurá-lo.

@deweerdt
Graças a isso, tive a chance de entender um pouco mais.
Muito obrigado.
Eu tenho uma pergunta.
Eu sei que "picoparser" é a função de analisar mensagens http.
Existe uma loja?
No ppt, é denominado buffer. Qual buffer é o buffer?
É um buffer no servidor web? É um buffer no picoparser?

E "sem estado" significa velocidade?
Explique em detalhes.

Eu não tenho inglês suficiente. Lamento se minha pergunta soou estranha.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

utrenkner picture utrenkner  ·  3Comentários

fetus-hina picture fetus-hina  ·  4Comentários

concatime picture concatime  ·  3Comentários

proyb6 picture proyb6  ·  5Comentários

Ys88 picture Ys88  ·  5Comentários