Nazar
я нет, но мы сейчас говорим не просто о протоколе, но и о его работе. веб серверу надо не просто принять запрос и его обработать, но правильно утилизировать вычислительные мощности.
Sergei
а как правильно обработать запрос - задача приложения тащемта.
Vladimir
Там куда больше проблем доставит тюнинг сети
Nazar
расскажите, как вы безпроблемно обслуживаете 1m rps, с удовольствием послушаю
Aleksey
миллион rps не заоблачный показатель?
Вопрос в количестве 500ок же ;)
Vladimir
миллион rps не заоблачный показатель?
Если ты отвечаешь 200ок на все, то реализуемо
Sergei
расскажите, как вы безпроблемно обслуживаете 1m rps, с удовольствием послушаю
я про парсинг и реализацию протокола, а вы мне про приложение и бизнес логику
Nazar
ну с nginx можно в таком случае еще больше получить производительность отдавая 444
Vladimir
@wavedocs я не сильно заморачиваясь на тюнинг пару лет назад на более-менее обычном железе получал 500к рпс http, именно на отдачу "200 ок", но с полным парсингом и валидацией запроса
Sergei
Вопрос в количестве 500ок же ;)
отдать 1мрпс 500ок тоже непросто. но возможно.
Vladimir
если заморочиться тюнингом дальше и взять железо чуть пожирнее 2-х 8и ядерных процов, то можно и больше на nginx'е
Nazar
это не http
c чего бы?
niko
суть апликейшн сервера, что это фреймворк где все переплетено - стейты, база, приложение в результате ты можешь передать стейт приложения в другой сервер и получить фейловер или можешь избавить приложение от хождения в базу это все фишки для энтерпрайза, всякие вебсферы и гласфиши
niko
а нжинкс просто реализовал десятую часть из этого, назвал гордым словом и продает
Sergei
c чего бы?
ответ отсутствует.
Nazar
ответ отсутствует.
но протокол то юзается http
Nazar
444 Connection Closed Without Response A non-standard status code used to instruct nginx to close the connection without sending a response to the client, most commonly used to deny malicious or malformed requests.
Vladimir
@wavedocs https://camo.githubusercontent.com/6958e5269df87068b510116c6f9028ed28d33419/687474703a2f2f692e6779617a6f2e636f6d2f61383563313864333136326466623436623438356262343165306164343433612e706e67
Vladimir
я просто оставлю это тут
Sergei
если конфиг типа server { listen 80 default_server return 444; } и это единственный сервер, я почти уверен что нджинкс не парсит ничего.
Vladimir
именно к вопросу парсинга http
Nazar
в стандарт http не входит, но с клиентом общение идет по http протоколу
Vladimir
бенчмарк как я понимаю 2014 года, 5.4М запросов в секунду может перелопатить парсер
Sergei
в стандарт http не входит, но с клиентом общение идет по http протоколу
там общение >syn <synack >ack >GET /blablabla\nHost:blablabla.... <rst
Sergei
тут нет HTTP
niko
а GET это что?:)
Vladimir
tcp :D
niko
ааа ок
Vladimir
а GET это что?:)
пока нет ответа - это все еще чистый tcp
Nazar
все эе очевидно
niko
а о чем вы кстати спорите?:)
Sergei
мне говорят что протокол сложный, я говорю что простой
niko
а как сервер узнает что надо 444 отдать?
Vladimir
а о чем вы кстати спорите?:)
о том что uwsgi нужен потому что http парсить сложно и дорого и медленно (по словам @wavedocs )
niko
не смотрит в request ?)
Vladimir
поэтому нужны application server'ы
Vladimir
а потом мы ушли в "а насколько просто обработать 1М http requests/s"
niko
пожалуй это неправда
niko
а вы википедию уже читали?
niko
https://en.wikipedia.org/wiki/Application_server держите
Vladimir
и вот дошли до того что отдавать "200 ОК" на любой запрос это не честно, так можно уйти в отправку "444"
Nazar
о том что uwsgi нужен потому что http парсить сложно и дорого и медленно (по словам @wavedocs )
Как правило для более легкого маштабирования, общего апи. К примеру uwsgi не просто реализация вебсерера но и общение приложения происходит по протоколу wsgi в бинарном виде, тем самым уменьшается латенси, увеличивается скорость обработки запросов
niko
uwsgi это такой же протокол как fastcgi или http
niko
никакой разницы нет
niko
парсить их одинаково
Sergei
Ivan
Вы тут опять абстрактных коней в вакууме решаете? :)
Sergei
провел тест, действительно нджинкс парсит HTTP перед тем как "отдать" 444.
Denis
@spuzirev чтобы не морочится с мультипликацией на стороне application и не имплементить логику сто раз
Vladimir
взял библиотеку и юзаешь
Denis
не
Vladimir
есть под почти любой язык
Denis
да. сейчас да
Denis
зачем unit в 2к17 я ваще хз
Vladimir
ну так nginx app server тока ща анонсировали
Denis
я про далёкие 2002
Vladimir
и вопрос о том нафига
Nazar
и вопрос о том нафига
если верить разработчикам он еще быстрее и проще, чем обычный nginx
Denis
я думал вопрос зачем вобще, а не конкретно юнит
Nazar
как по факту, хз
Nazar
я про unit если что)
Sergei
@spuzirev чтобы не морочится с мультипликацией на стороне application и не имплементить логику сто раз
нууу, хз, разница обычно между чем-то fastCGI.ListenAndServe() и http.ListenAndServe()
Sergei
почему например мы не запускаем go в uwsgi? :)
Denis
нууу, хз, разница обычно между чем-то fastCGI.ListenAndServe() и http.ListenAndServe()
так тебе прид1тся тредик написать с буферизацией, сделать слой для "медленных клиентов"
Sergei
это придумали когда был CGI, но уже хотелось чуть быстрее работать.