Evgeny
Сокет же не тронет карту
Aleksand
Просто я не уверен, что нода справляется с 30000 сообщений, среди которых есть сообщения размером 2 метра
нода как раз создана для того чтобы очень эффективно работать с большими стримами в i/o, это ее ключевая фича
Evgeny
Если только они ипс через внешний интерфейс не гоняли
Oleg 🍺
IPC сейчас гоняется через юникс сокеты
Evgeny
Энивей, у меня просто шина 17, сокет - 1.3
Oleg 🍺
Я сам лично видел
Aleksand
IPC сейчас гоняется через юникс сокеты
процесс с процессом через юникссокет говорит?
Oleg 🍺
Да
Oleg 🍺
Редис говорят не справился с этой задачей
Aleksand
Редис говорят не справился с этой задачей
ну а что они гоняют между собой? нет ли там оверхеда дикого? легко там это устроить
Oleg 🍺
Есть мастер процессы, в которые прилетают события назначенные определённому пользователю, далее мастер процесс находит воркер, к которому подключён юзер и передаёт в него через IPC предназначенное сообщение, и далее этот воркер отправляет это сообщение
Evgeny
Стоп. А там не 200 процессов на сервер?
Oleg 🍺
Нет, серверов овер дофига
Aleksand
Нет, серверов овер дофига
ну вот надо смотреть карту коммуникаций и strace делать на воркерах
Oleg 🍺
Проблема начинается, тогда когда событий слишком много
Oleg 🍺
Раза в три увеличивается - у меня сейчас нет точных цифр, но ребята говорят были проблемы когда новый сервис запускали
Oleg 🍺
Типо CPU уходил в 100% на сервере
Oleg 🍺
Я так понимаю, там сервис очень много слал событий, которые должны предназначаться определённому юзеру
Oleg 🍺
Если бы был простой бродкаст, то проблем бы не было
Oleg 🍺
Кстати, с каждым днём прихожу к выводу, что протокол GraphQL очень даже хорошо, и всё что сейчас городят проекты такое уг
Oleg 🍺
Один батч запрос через GraphQL и всё бы нужные данные быстренько прилетели, правда это бы не решило проблемы с ивентами для определённых юзеров
Vladimir
GraphQL здесь не при чем
Oleg 🍺
GraphQL здесь не при чем
Это так, отступление
Aleksand
Если бы был простой бродкаст, то проблем бы не было
strace, ftrace, и профилирование и тогда будет понятнее, уверен там проблема в архитектуре
Oleg 🍺
Возможно, я с этой архитектурой знаком только дня два)
Oleg 🍺
Ну я вижу сколько сейчас в пик приходится, сколько CPU на данный момент и прикидываю, что происходит, когда CPU 100%
Oleg 🍺
Да, но ведь в пиковой нагрузке приходится 1 мнл пакетов
Aleksand
для понимания где в ноде тонкие места и когда эвентлуп начинает сдавать
Aleksand
https://githubengineering.com/brubeck/
Oleg 🍺
Это на все сервера
Oleg 🍺
Aleksand
и это про udp, про tcp иначе может быть
Aleksand
Спасибо 👍
там подробно где во что нода упирается
Aleksand
сложно представить что вы по прессингу пакетами обогнали гитхаб
Aleksand
Да, но ведь в пиковой нагрузке приходится 1 мнл пакетов
ты как считал что миллион? есть мониторинг какой-то?
Oleg 🍺
Да, графана
Oleg 🍺
Я посчитал кол - во серверов * кол-во пакетов на сервер
Aleksand
Да, графана
какова их структура? если это бинарные данные от пользователя это одно, если это сообщения в websockets это совсем другое
Oleg 🍺
Это только сообщения websocket
Aleksand
Это только сообщения websocket
1 млн в секунду?! 😧
Oleg 🍺
Да
Aleksand
а клиентов в пике сколько?
Oleg 🍺
Этой статистики у меня нету
Oleg 🍺
А есть
Aleksand
Да
соединений от клиентов сколько?
Oleg 🍺
Ща графана загрузит данные
Oleg 🍺
Не могу сказать сервер с этой аналитикой не отвечает
Aleksand
Ща графана загрузит данные
ну надеюсь что у вас сотни тысяч активных коннектов на такой объем
Oleg 🍺
Да, естественно
Oleg 🍺
Просто мы очень много данных гоняем
Oleg 🍺
Сейчас нагрузка маленькая около 60000 пакетов в секунду
Aleksand
Да, естественно
а что это за проект если не секрет? он же публичный наверняка
Oleg 🍺
Финансовый
Aleksand
Просто мы очень много данных гоняем
вот странно что у вас не прорисована карта потоков данных
Aleksand
Финансовый
клиенты - это реальные люди? или боты?
Oleg 🍺
Я не знаю что это, но может она есть
Oleg 🍺
Реальные люди
Aleksand
Я не знаю что это, но может она есть
ну блок-схема компонентов какая-то, кто как с кем общается, без этого вообще сложно понимать что происходит внутри
Oleg 🍺
Это всё есть ofc
Oleg 🍺
Я же тоже не могу всё рассказать)
Denys
Всем привет. Посоветуйте книгу по ноде для начинающего, на русском)
Anonymous
Всем привет. Посоветуйте книгу по ноде для начинающего, на русском)
"Итан Браун - Веб-разработка с применением Node и Express. Полноценное использование стека JavaScript(Бестселлеры O`Reilly) - 2017"
Denys
Спасибо)
‌‌‎D
#whois - SPA на Vue.js - Full Stack - Опытом - Есть проект на Node.js - Астана - Поиск
Islomkhodja
Promise это сахар синтаксисный или работает по другому? в тесте показывает что коллбеки быстрее..
Islomkhodja
результаты разные
Ihor
ну я могу еще посетовать на то что в этом случае надо каждый раз создавать объект Промисов и возвращать его
Ihor
всяко тяжелее, чем просто колбек вызвать
‌‌‎D
Promise это сахар синтаксисный или работает по другому? в тесте показывает что коллбеки быстрее..
Промис это объект отображающий состояние асинхронного процесса, коллбек это функция
Ihor
но разница в производительности между колбеками и промисами слишком мала чтобы серьезно задумываться)
Ihor
промисы удобные.
Ihor
и оно того стоит