Size: a a a

2021 March 24

V

Vladimir in phpGeeks
Artyom
Не представляю что-то настолько же универсальное, что заменит Nginx.
Но есть весьма интересная статья от разработчиков Dropbox:
https://habr.com/ru/company/southbridge/blog/513504/
Альтернативы-то есть, но чтобы какая-то из них заменила nginx - сложно представить)
источник

A

Artyom in phpGeeks
Vladimir
Альтернативы-то есть, но чтобы какая-то из них заменила nginx - сложно представить)
Ага, история как с майкрософт офисом, где каждому нужно от силы 5% функционала, только вот эти 5% у каждого свои)
источник

M

Maxim Kainov in phpGeeks
Artyom
Много запросов = переключение контекста между потоками становится бутылочным горлышком приложения.
Именно так на смену Apache пришёл nginx, работающий с асинхронным I/O, которое не ждёт ответа от каждого клиента.
В смысле не ждет ответа от каждого клиента? Судя по бенчмаркам, нет бутылочного горлышка, о котором ты говоришь.
источник

A

Artyom in phpGeeks
Maxim Kainov
В смысле не ждет ответа от каждого клиента? Судя по бенчмаркам, нет бутылочного горлышка, о котором ты говоришь.
А кто создаёт отдельный поток на каждого клиента?
источник

V

Vladimir in phpGeeks
Artyom
Не представляю что-то настолько же универсальное, что заменит Nginx.
Но есть весьма интересная статья от разработчиков Dropbox:
https://habr.com/ru/company/southbridge/blog/513504/
интересная статья с подробностями про nginx и envoy вплоть до системных вызовов
источник

M

Maxim Kainov in phpGeeks
Artyom
А кто создаёт отдельный поток на каждого клиента?
Процесс менеджер
источник

M

Maxim Kainov in phpGeeks
Какая разница
источник

A

Artyom in phpGeeks
Maxim Kainov
Процесс менеджер
Который почти всегда управляет количеством запущенных воркеров?)
источник

AB

Artur BAGArt in phpGeeks
Vladimir
Ну т.е. если заблокировать эвент луп, нода всё равно продолжит работать, принимать и отдавать соединения, там же много потоков, правильно?
Ну т.е. если заблокировать эвент луп, нода всё равно продолжит работать,
да :) не упадёт же

принимать и отдавать соединения,
на сколько я понимаю  приём соединений(не обработка трафика) происходит на стека TCP/IP встроенного в ОС. никогда не лез так глубоко. + обычно у соединений короткий таймаут на TCP-хэндшейк. что тоже даёт мне повод усомниться, что за это отвечает поток выполнения JS или PHP
те сетевые соединения продолжат приниматься

отдавать не очень понятно что имелось ввиду но закрывать соединения точно можно без участия сервера :)

а принимать трафик тем более продолжит. но в рамках буфера. клиенты не шлют трафик по 10 раз пока сервер не соизволит его принять


вопрос из серии компилируемый ли пхп
источник

M

Maxim Kainov in phpGeeks
Artyom
Который почти всегда управляет количеством запущенных воркеров?)
К чему ты это
источник

A

Artyom in phpGeeks
Maxim Kainov
К чему ты это
К тому, что ни один нормальный настроенный сервер если к нему прилетят 500 клиентов не запустит 500 экземпляров PHP.
А будет использовать имеющийся пул, иначе не хватит ресурсов.
С потоками тоже самое, но в меньшем формате.
источник

V

Vladimir in phpGeeks
Artur BAGArt
Ну т.е. если заблокировать эвент луп, нода всё равно продолжит работать,
да :) не упадёт же

принимать и отдавать соединения,
на сколько я понимаю  приём соединений(не обработка трафика) происходит на стека TCP/IP встроенного в ОС. никогда не лез так глубоко. + обычно у соединений короткий таймаут на TCP-хэндшейк. что тоже даёт мне повод усомниться, что за это отвечает поток выполнения JS или PHP
те сетевые соединения продолжат приниматься

отдавать не очень понятно что имелось ввиду но закрывать соединения точно можно без участия сервера :)

а принимать трафик тем более продолжит. но в рамках буфера. клиенты не шлют трафик по 10 раз пока сервер не соизволит его принять


вопрос из серии компилируемый ли пхп
ну ок, неправильно выразился, не приниматься, а обрабатываться, потому как нода не принимает и не отдает сама, делает это средствами ОС
источник

M

Maxim Kainov in phpGeeks
Artyom
К тому, что ни один нормальный настроенный сервер если к нему прилетят 500 клиентов не запустит 500 экземпляров PHP.
А будет использовать имеющийся пул, иначе не хватит ресурсов.
С потоками тоже самое, но в меньшем формате.
Возьми, посмотри бенчмарки, сколько запросов в секунду обрабатывается
источник

A

Artyom in phpGeeks
Maxim Kainov
Возьми, посмотри бенчмарки, сколько запросов в секунду обрабатывается
Можно мне конкретный пример бенчмарка, где на КАЖДОГО клиента создаётся ОТДЕЛЬНЫЙ поток?)
источник

AB

Artur BAGArt in phpGeeks
Vladimir
ну ок, неправильно выразился, не приниматься, а обрабатываться, потому как нода не принимает и не отдает сама, делает это средствами ОС
а именно этот эффект что сеть живёт своей жизнью позволяет многопоточно качать
источник

M

Maxim Kainov in phpGeeks
Artyom
Можно мне конкретный пример бенчмарка, где на КАЖДОГО клиента создаётся ОТДЕЛЬНЫЙ поток?)
Некоторые запросы в очереди могут висеть, это уже смотря какая реализация
источник

V

Vladimir in phpGeeks
Artur BAGArt
а именно этот эффект что сеть живёт своей жизнью позволяет многопоточно качать
я именно про блокировку event loop’а говорил, что если его заблочить, то запросы клиентов будут ждать
источник
2021 March 25

A

Artyom in phpGeeks
Maxim Kainov
Некоторые запросы в очереди могут висеть, это уже смотря какая реализация
Вот именно, что очередь, причём эта очередь реализуется не спящими потоками, которые слишком тяжеловесны для этого.
источник

S🛸

Sergey 🛸 in phpGeeks
Maxim Kainov
Гораздо проще на каждый запрос отдельный поток, где уже синхронно выполняются операции, возможно, иногда асинхронно.
Слышал про проблему 10к соединений?
источник

AB

Artur BAGArt in phpGeeks
Vladimir
я именно про блокировку event loop’а говорил, что если его заблочить, то запросы клиентов будут ждать
Я ж понял)
источник