H2o: Почему вода такая быстрая?

Созданный на 10 нояб. 2017  ·  6Комментарии  ·  Источник: h2o/h2o

Я изучаю, почему вода работает быстро.

  1. Что означает: «В отличие от большинства синтаксических анализаторов, он не имеет состояния и не выделяет память сам по себе. Все, что он делает, это принимает указатель на буфер и структуру вывода и устанавливает указатели в последнем так, чтобы они указывали на необходимые части буфера». иметь в виду?

Когда я читаю ppt или читаю git «прочитай меня», он говорит «быстро», потому что это «В отличие от большинства парсеров, он не имеет состояния и не выделяет память сам по себе. Все, что он делает, это принимает указатель на буфер и структуру вывода, а также настройки. указатели в последнем должны указывать на необходимые части буфера ".
Я не понимаю, что это значит. Буду признателен, если подробно объясните.

Буду очень признателен, если вы дадите мне знать.

Самый полезный комментарий

мои результаты теста seige на экземпляре Uplcoud 2GB с использованием LAN-соединений

Команда - siege -v -d1 -c250 -i -f siege.txt

siege.txt имеет 65 URL-адресов (все кешируются и обслуживаются самим сервером)

H2O

Транзакции: 12766 просмотров
Доступность: 99,86%
Затраченное время: 35,62 сек.
Передано данных: 580,61 МБ
Время отклика: 0,67 сек.
Скорость транзакции: 358,39 транзакций / сек.
Пропускная способность: 16,30 МБ / с
Параллелизм: 240.01
Успешных транзакций: 12766
Неудачные транзакции: 18
Самая длинная транзакция: 4,64
Самая короткая транзакция: 0,00

nginx

Транзакции: 9909 просмотров
Доступность: 99,77%
Затраченное время: 34,35 сек.
Передано данных: 455,19 МБ
Время отклика: 0,84 сек.
Скорость транзакции: 288,47 транзакций / сек.
Пропускная способность: 13,25 МБ / с
Параллельность: 242,80
Успешных сделок: 9905
Неудачные транзакции: 23
Самая длинная транзакция: 8,84
Самая короткая транзакция: 0,00

Кэдди

Транзакции: 12145 просмотров
Доступность: 99,44%
Затраченное время: 35,07 сек.
Передано данных: 635,66 МБ
Время отклика: 0,69 сек.
Скорость транзакции: 346,31 транзакций / сек.
Пропускная способность: 18,13 МБ / с
Параллельность: 239,72
Успешных сделок: 11813
Неудачные транзакции: 69
Самая длинная транзакция: 1,97
Самая короткая транзакция: 0,00

Все 6 Комментарий

мои результаты теста seige на экземпляре Uplcoud 2GB с использованием LAN-соединений

Команда - siege -v -d1 -c250 -i -f siege.txt

siege.txt имеет 65 URL-адресов (все кешируются и обслуживаются самим сервером)

H2O

Транзакции: 12766 просмотров
Доступность: 99,86%
Затраченное время: 35,62 сек.
Передано данных: 580,61 МБ
Время отклика: 0,67 сек.
Скорость транзакции: 358,39 транзакций / сек.
Пропускная способность: 16,30 МБ / с
Параллелизм: 240.01
Успешных транзакций: 12766
Неудачные транзакции: 18
Самая длинная транзакция: 4,64
Самая короткая транзакция: 0,00

nginx

Транзакции: 9909 просмотров
Доступность: 99,77%
Затраченное время: 34,35 сек.
Передано данных: 455,19 МБ
Время отклика: 0,84 сек.
Скорость транзакции: 288,47 транзакций / сек.
Пропускная способность: 13,25 МБ / с
Параллельность: 242,80
Успешных сделок: 9905
Неудачные транзакции: 23
Самая длинная транзакция: 8,84
Самая короткая транзакция: 0,00

Кэдди

Транзакции: 12145 просмотров
Доступность: 99,44%
Затраченное время: 35,07 сек.
Передано данных: 635,66 МБ
Время отклика: 0,69 сек.
Скорость транзакции: 346,31 транзакций / сек.
Пропускная способность: 18,13 МБ / с
Параллельность: 239,72
Успешных сделок: 11813
Неудачные транзакции: 69
Самая длинная транзакция: 1,97
Самая короткая транзакция: 0,00

Когда я читаю ppt или читаю git «прочитай меня», он говорит «быстро», потому что это «В отличие от большинства парсеров, он не имеет состояния и не выделяет память сам по себе. Все, что он делает, это принимает указатель на буфер и структуру вывода, а также настройки. указатели в последнем должны указывать на необходимые части буфера ".
Я не понимаю, что это значит. Буду признателен, если подробно объясните.

Это означает, что когда H2O получает запрос, сам анализатор HTTP не выделяет никакой памяти, кроме той, которая необходима для получения запроса. Парсер HTTP / 1, который использует H2O, - picohttpparser, у него есть собственный репозиторий: https://github.com/h2o/picohttpparser . Источник достаточно мал, и в нем есть небольшие тесты https://github.com/h2o/picohttpparser/blob/master/test.c , демонстрирующие его использование.

@sudarsha Это результаты HTTP / 2?

@ xm74 кажется, что нет, потому что _siege_ еще не поддерживает HTTP / 2.

Осада этого не поддерживает. h2load есть, но мне не пришлось его настраивать.

@deweerdt
Благодаря этому у меня появилась возможность понять немного больше.
Большое тебе спасибо.
У меня вопрос.
Я знаю, что «пикопарсер» выполняет парсинг HTTP-сообщений.
Есть магазин?
В ppt он называется буфером. Какой буфер является буфером?
Это буфер на веб-сервере? Это буфер в пикопарсере?

А «без гражданства» означает скорость?
Пожалуйста, объясните подробно.

Мне не хватает английского. Прошу прощения, если мой вопрос прозвучал неудобно.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

dch picture dch  ·  5Комментарии

Ys88 picture Ys88  ·  5Комментарии

proyb6 picture proyb6  ·  5Комментарии

utrenkner picture utrenkner  ·  7Комментарии

utrenkner picture utrenkner  ·  5Комментарии