Vladimir
Ну очевидно что вопросами в чаты ты эту задачу не решишь
Vladimir
Бери профайлер и вперед
Oleg 🍺
Это само собой будет, но может есть статьи или примеры, того как ребята строили высоконагруженные системы на NodeJS и WebSocket?
Vladimir
Ты ищешь волшебную таблетку, не стоит
Oleg 🍺
Ну волшебная таблетка была сверху в виде Elexira
Oleg 🍺
Я правда ещё хочу сделать замеры на серверах Discord
Vladimir
Откуда ты знаешь? Может так же медленно будет?
Oleg 🍺
Попробовать запихнуть в их канал очень большие сообщения
Oleg 🍺
Откуда ты знаешь? Может так же медленно будет?
Элексир и ерланг, как раз заточены для коммуникации
Vladimir
И что?
Oleg 🍺
Ну они явно могут быстрее чем нода передать сообщение между процессами
Vladimir
Но ты не знаешь, в этом проблема или нет
Oleg 🍺
В статье, которую я прочитал, примерно те же проблемы, что и у меня, даже уверен у дискорда та же самая архитектура (это из статьи видно)
Oleg 🍺
Тут два варианта IPC либо event loop lag
Evgeny
А на чем айписи у вас?
Oleg 🍺
На юникс сокетах
Evgeny
ну добавь метрику померять эталонную передачу мегабайта без обработки
Oleg 🍺
Как это интересно правильно померить
Oleg 🍺
Хотя знаю
Oleg 🍺
Туда - обратно
Evgeny
Лучше даже не метр а гиг
Oleg 🍺
Допустим я замерил - получилось 13 секунд
Oleg 🍺
И что с этим делать?
Evgeny
давай думать. 13 секунд это много или мало?
Oleg 🍺
Без понятия, это 13 секунд будут на тестовой тачке или даже локальной
Oleg 🍺
Дальше можно замерить другие процессы наверное
Oleg 🍺
Типо сколько эти данные будут отправлять по веб сокету
Oleg 🍺
И т.д.
Oleg 🍺
И там где дольше всего, там и нужно оптимизировать
Evgeny
нет. нужно сранвить с эталонным dd if=/dev/zero of=/dev/null bs=1M cnt=1024 (вроде нигде не опечатался)
Oleg 🍺
Ого, это ещё интереснее
Evgeny
если разница велика - тогда сравнить с тем-же там-же на пустой тачке через сокеты.
Vladimir
Да ну, это как то бесмысленно
Evgeny
Скорость шины ж
Vladimir
Нужно врубать профайлер и искать узкие места
Evgeny
Это ты ему уже предлагал
Oleg 🍺
Этим я буду заниматься
Oleg 🍺
Правда копаться в тонне данных то ещё удовольствие
Vladimir
Ну то что ты предлагаешь как то издалека слишком
Evgeny
просто я почти уверен что тормозит не нода
Vladimir
Если подскакивает CPU, то надо смотреть что делает CPU
Vladimir
Хотя то что 10 процессов вызывают 1600% загрузку выглядит подозрительно
Oleg 🍺
нет. нужно сранвить с эталонным dd if=/dev/zero of=/dev/null bs=1M cnt=1024 (вроде нигде не опечатался)
Я хз, но у меня не получилось запустить из под баша в убунту, из под винды
Evgeny
ой
Evgeny
а вот и ответ
Oleg 🍺
?
Sergey
как обычно
Sergey
винда
Oleg 🍺
Я сейчас на домашнем компе, и тут типо в 10 винде есть баш нативный
Oleg 🍺
Ну это же не сервера на винде
Oleg 🍺
Хотя было бы интересно на это посмотреть
Sergey
не интересно
Sergey
правда
Oleg 🍺
Большая часть школьных серверов (в Питере) работают на виндоус серверах 2003
Oleg 🍺
Да, да, ребят, и деньги на их лицензии из ваших налогов идут))
Evgeny
всё? стопор?
Evgeny
count значит
Oleg 🍺
да
Oleg 🍺
Нормуль у меня скорость 10.2 GB/s
Evgeny
Ну вот теперь тоже самое через ноду
Oleg 🍺
Ну это уже завтра
Evgeny
Я вот кстати задумался а не накосячил ли я. Через локальный сокет же будет тож самое? Есть кто сходу для socat'a составит команды?
Oleg 🍺
Ну можно ман почитать
Oleg 🍺
Там так запарно делать)
Evgeny
Хм, через nc у меня получилось почти в 10 раз медленнее
Evgeny
Aleksand
точнее можно, но непойми что намеряешь
Aleksand
Там так запарно делать)
ну тебя эликсир не спасет если ты не хочешь профилировать код. явно где-то грубые косяки, i/o у ноды отличный. а потолок эвентлупа ноды в мире достигла только одна компания, это компания гитхаб, они писали на каких объемах это происходит
Aleksand
там эвентлуп просто терял пакеты потому что не справлялся
Oleg 🍺
Ну это радует)
Aleksand
А почему?
он форкает же на каждое соединение, непонятно что будет измеряться. плюс я готов поспорить что он упадет раньше чем получится измерение
Evgeny
Ну я один раз прогнал по одному сокету - он закрылся, так и я больше не шлю
Aleksand
Ну это радует)
профилировать надо, дело в коде а не в ноде. 100%
Oleg 🍺
Возможно, это в первую очередь и будет делаться
Oleg 🍺
Просто я не уверен, что нода справляется с 30000 сообщений, среди которых есть сообщения размером 2 метра
Evgeny
Да какая ей разница сколько там метров?
Aleksand
Ну я один раз прогнал по одному сокету - он закрылся, так и я больше не шлю
ну задача же измерить пропускную способность интерфейса чистую. там имеет смысл посмотреть какая карта, как она настроена и потюнить ядро, возможно