
Ywein
23.06.2017
20:50:57

Дмитрий
23.06.2017
20:52:08
console.log — задержка на 50-80 мс — вылетаешь за отведеный интервал для генерации ключа (тупо рассинхронизируешься по часам) — сервер твою авторизацию заворачивает
В итоге там сейчас убер-логгер)

Winni
23.06.2017
20:52:39

Google

Дмитрий
23.06.2017
20:53:03
У меня вообще сжатия нет
Более того, я даже перевел компиляцию в режим с async, чтобы не терять время и стэк в генераторах

Сергей
23.06.2017
20:53:39

Дмитрий
23.06.2017
20:53:43
Ага

Winni
23.06.2017
20:53:44

Дмитрий
23.06.2017
20:54:23
Самый люто дичайший момент был — когда у меня падала авторизация от того, что заменял промис на async ??

Сергей
23.06.2017
20:54:47

Winni
23.06.2017
20:55:04

Дмитрий
23.06.2017
20:55:07
Это жесть, когда ты видишь фигню, которая просто не может происходить, но однако же ты её видишь своими глазами уже пол месяца

Winni
23.06.2017
20:56:41

Дмитрий
23.06.2017
20:56:43
В итоге там сейчас убер-логгер)
Короче в логгере сейчас мемоизация мета-данных события, асинхронный вывод, задержка, чтобы не мешать обсчёту остальных данных и два уровня буферизации сообщений

Google

Дмитрий
23.06.2017
20:57:33
У меня вообще транспиляция весьма слабая — убираю флоу типы, class props, object rest, конвертирую for of и const в var

? гриб
23.06.2017
20:58:40

Winni
23.06.2017
20:58:48

? гриб
23.06.2017
20:58:49
Асинх

Winni
23.06.2017
20:59:59
Сильный фронтенд для стабого бэкенда как по мне получился.
Ха, у меня скорость загрузки со стима режется скоростью записи на диск

Дмитрий
23.06.2017
21:01:03
Я именно для этого дважды буферизирую массив сообщений перед записью, чтобы обработка данных была как можно дальше от критичных вычислений

Сергей
23.06.2017
21:01:56

Дмитрий
23.06.2017
21:01:57
Фактически, это своего рода низкий приоритет

Сергей
23.06.2017
21:02:58

Дмитрий
23.06.2017
21:03:40
ну у меня не совсем нодовский проект ? Но я просто решил что вертел всех тех, кто пытается запустить такие штуке на допотопных нодах и браузерах)

Сергей
23.06.2017
21:04:03

Alex
23.06.2017
21:05:05
вынеси логирование в воркер
ну а вообще звучит смешно - рассинхрон какой то при авторизации
если авторизация такой пиздец по процессу - делай ее блокирующей весь тред чо

Дмитрий
23.06.2017
21:08:07
По очереди с паузой между ними
Сообщения отправляются из вызовов логгера и собираются в первичный буфер, небольшой, на 50-100 сообщений, чтобы не сильно нагружать ноду непосредственно во время вызовов. После его заполнения он резко препроцессится весь, целиком в один проход, потому что так будет быстрее чем регулярно дёргать обработки по одной. После препроцессинга сообщения отправляются во вторичный буфер, большой, который очищается раз в пару-тройку секунд и так же резко производит вывод сразу пачкой, потратив на сотни сообщений всего одну итерацию вывода в консоль

Google

Alex
23.06.2017
21:09:28
как тебе выше сказали - по разным причинам фокус с вкладки уйдет и все ломаетс

Дмитрий
23.06.2017
21:09:34

Alex
23.06.2017
21:10:21
ты никогда не смотрел что будет если приложение на аутпут спамит в неактивной вкладке?

Дмитрий
23.06.2017
21:10:45
У юзера вообще этих логов быть не должно
В этом и смысл глобов в спеке debug

Alex
23.06.2017
21:11:05
так а зачем ты на деве это пихаешь в основной процесс

Дмитрий
23.06.2017
21:11:30
Какой прод, какой браузер вообще?
Дебаг и консоль ноды

Alex
23.06.2017
21:11:54
ну и все это в 1 треде так?

Дмитрий
23.06.2017
21:12:00
Нет конечно

Alex
23.06.2017
21:12:28
ты ж сам говоришь что console.log у тебя отжирается время от event loop'а

Alex
23.06.2017
21:13:38
ты либо в 1 треде логи выводишь с работой приложухи, либо это магия какая то :)

Дмитрий
23.06.2017
21:14:40
Я уже описал выше, у меня сейчас всё работает прекрасно при крайне высоких потоках логов0

Alex
23.06.2017
21:15:11
ты проблему то не решил фактически - просто у тебя теперь тачка вывозит

Дмитрий
23.06.2017
21:15:44
Тысяча io в лог — тысяча раз по 100 мс задержки
один блок вывода — один раз по 100 мс задержки на тысячу сообщений
Есть разница?)

Alex
23.06.2017
21:16:50
а теперь делай все кухню с сообщениями и логами отдельным тредом
и не будет у тебя этой задержки

Google

Alex
23.06.2017
21:17:26
для этого воркеры так то и делали

Дмитрий
23.06.2017
21:17:26
А потом отлаживать ещё и его, супер

Alex
23.06.2017
21:17:33
для процессинга
что отлаживать то?

Дмитрий
23.06.2017
21:17:38
А прототипы кстати как парсить будем
И циклические ссылки

Alex
23.06.2017
21:17:51
ты туда переложишь все рутину для обработки логов

Дмитрий
23.06.2017
21:19:21
И выпущу релиз с выходом на пенсию

Alex
23.06.2017
21:19:54
делов ровно на вечер :) ну тебе виднее

Дмитрий
23.06.2017
21:20:17
Ещё кстати проблема в том, что пакет должен собираться и для ноды и для браузера

Admin
ERROR: S client not available

Дмитрий
23.06.2017
21:20:25
Со своими имплементациями воркеров
С поддержкой вебпака

Alex
23.06.2017
21:20:55
ты же сам сказал что клиенту это не нужно
ну и имплементации воркеров для ноды и браузеры так то аналогичны
причем тут вебпак тогда вообще непонятно

Дмитрий
23.06.2017
21:22:29
И желательно, чтобы папка node_modules у юзеров не коллапсировала под действием гравитации в чёрную дыру

Google

Alex
23.06.2017
21:23:56
ты просто еще дзен не познал :)
можно все

Дмитрий
23.06.2017
21:24:12
Да конечно, я то не познал)
Требуется чтобы вебпак так же имел возможность собрать воркеры
Со своими тонкостями

Alex
23.06.2017
21:24:26
что значит собрать

Дмитрий
23.06.2017
21:24:37
Видишь сколько вопросов сразу возникает

Alex
23.06.2017
21:24:43
ты их в бандл пихать собрался?

Дмитрий
23.06.2017
21:25:20
Что значит пихать?
Помимо консольлога в модуле ещё порядочно вещей, которые требуют обсчёта в воркерах
И да, это всё работает в бандле. А так же просто отдельно в браузере. А так же в ноде. А так же отдельным микросервисом. Работает с постгрес. с монгой, с редисом и с rethinkdb в качестве хранилищ, но так же не откажется сохраниться в localstorage или банально в json файл на диске.
На react native пока, увы, не завелось
Масштаб проблем, всплывающих при такой универсальности думаю можете представить)

Alex
23.06.2017
21:36:00
я не так давно просто сталкивался с похожей проблемой производительности, нужна была типо прокси - браузер - сокет соединение - прокси сервер - любой ендпоинт (редис, постгря и тд)
на уровни прокси нужно было писать гору логов опционального
в итоге все нормально работало только если логирование вынести в отдельный сервис с воркерами
обьемы на запись думаю не меньше были
логика по обработке тоже есть

Дмитрий
23.06.2017
21:44:29
Каждое усложнение архитектуры — это добавление точек для отказа модуля
Это дополнительное время на разработку и поддержку

Alex
23.06.2017
21:44:53
у всего есть своя цена
с другой стороны появляется масштабируемость
если бы у меня перестало хватать 1 инстанса - я бы в докере просто поднял еще 1