
Dmitry
27.09.2017
07:11:46
Ну в смысле я пользователь собственной либы
И нифига не понимаю как это сделать

Dmitry
27.09.2017
07:12:57
Это open source? Могу помочь

Google

Dmitry
27.09.2017
07:14:32
Либа oss
А проект - нет
Я почему то думал что можно сделать такой функционал просто и без проблем
Причём в самой либе

Alex
27.09.2017
07:22:49
неужели нет стандартного способа запускать какой-нить процесс как singleton

Dmitry
27.09.2017
07:23:31
Alex Как синглтон в кластере, такого чтобы прямо из супервизора работал без изменений нет.
@Virviil Могу сделать пример распределения для BucklerBot ?

Dmitry
27.09.2017
07:24:20
Тут главное понять идею

Alex
27.09.2017
07:24:35
https://stackoverflow.com/questions/4459431/erlang-best-way-for-a-singleton-gen-server-in-erlang-cluster

Dmitry
27.09.2017
07:24:42
Можешь кстати форкнуть

Alex
27.09.2017
07:24:44
http://erlang.org/doc/design_principles/distributed_applications.html
https://github.com/arjan/singleton

Google

Dmitry
27.09.2017
07:27:08
Alex А библиотеки есть ?

Dmitry
27.09.2017
07:27:22
Хм...
Выглядит прикольно

Dmitry
27.09.2017
07:27:33
Alex Последняя singleton - делает как раз то, что я предлагал с воркером.
И мониторит.

Dmitry
27.09.2017
07:27:45
Может быть её и взять
Как раз Глобал и глобал

Alex
27.09.2017
07:29:29

Dmitry
27.09.2017
07:33:31
Только я не понял - где тогда запускать этот воркер ?
В ините аппа?
Вот тут
Или в https://github.com/BucklerBot/buckler/blob/master/apps/buckler_bot/lib/buckler_bot/application.ex
Или в application.start
Перед супервизором

Alex
27.09.2017
07:35:25
похоже на то

Dmitry
27.09.2017
07:35:34
https://github.com/BucklerBot/buckler/blob/master/apps/buckler_bot/lib/buckler_bot/application.ex#L6
Либо после супервизора, если ему нужен repo и чтобы оно до этого процесса стартовалось: with {:ok, pid} <- Supervisor.start_link(children, opts), do: ...

Alexey
27.09.2017
07:38:22
да. по поводу загнивения. и в целом крутости ерланг. мильёны коннектов. сетевая непробиваемость ерланга. я тут с недельку упарывался тем, что простейший Hello World на Golang FastHTTP в два раза быстрее чем Elixir - Cowboy - Plug,
Но все дело оказалось в тестах, которыми я мерял длину пиписьки
ну и условия для измерения. с мороза там вышел. или из моря с холодной водой

Google


Alexey
27.09.2017
07:40:38
даже вот взял дома тупой свитч 2000 года на 100 мегабит. и проводами соединил тестирующую машину. и тестируемую. для теста взял прям вот отдельную машину, без всяких там виртуализаций. поставил FreeBSD 11. ну и тестил с помощью JMeter. ну и вот по RPS получалось, что Golang сильно вперед выходит
я вот и страдал по этому поводу. пробовал несколько других вариантов HTTP на ерланг и эликсир. они все показывают меньший результат
еще есть ряд незаконченных самописных аксепторов TCP для приема HTTP И без разбора с отдачей прямо Hello World. ну чтоб сетевую часть на пробиваемость протестить
ряд - это уже 11 вариантов ))) ну вот 11й и 12й велосипеды по скорости RPS по мнению JMeter приблизились к скорости Cowboy
это вот к тому, что изобретенный велосипед не всегда может обогнать даже стандартное решение
НО. решил тут попробовать в качестве тестировщика - Yandex.Tank
Зарядил нагрузку от 0 до 80К RPS
и получилось, что Еликсир-ковбой и Go FastHTTP показали почти одинаковый результат. Оба они уперлись в RPS порядка 5000. на используемом железе. с разницей в 500 RPS в пользу Golang
https://overload.yandex.net/46488
https://overload.yandex.net/46489
так что, блин, разные тесты могут показывать разные результаты. и можно прийти к разным выводам. а тут в чатике еще была ссыль про то, что нагрузочное тестирование одной машиной делать - это вообще не правильно. но ссылку я уже не смог найти. утонула в сообщениях.


Andrey
27.09.2017
07:50:54
кул стори, бро
есть исходникик вариантов и тестовых приложений? посмотреть хочется

Alexey
27.09.2017
07:52:57
а. кстати еще вот такой момент интересный.
на задаче установка соединения - получение данных - обработка - ответ - разрыв, это вот типичный случай для HTTP, не удалось найти разницу с включенным и выключенным EPOLL. как ни пробовал - получается ровно. со включенным EPoll даже иногда медленнее. гуглил, читал по этому поводу. похоже, что зависит от задачи. пишут, что в одних случаях выгоднее один из вариантов, в других - другой. предполагаю, что при постоянных коннектах по TCP может как раз EPoll помочь. та же история и про компиляцию в HiPE. никакой разницы нет по скорости.

Dmitry
27.09.2017
07:55:33
@bolshakov_av Понятно и логично, что Go быстрее будет в таких бенчмарках.

Alexey
27.09.2017
07:55:54
да вот, кстати, нет
я тоже так сначала думал

Dmitry
27.09.2017
07:56:27
Ну, он всё равно оказался на 500 быстрее

Alexey
27.09.2017
07:56:34
о чем и писал в статье

Google

Alexey
27.09.2017
07:56:35
https://habrahabr.ru/post/324818/
на что мне дали очень интересный каммент
https://habrahabr.ru/post/324818/#comment_10148168
"статически скомпилированная программа просто обязана быть быстрее виртуальной машины с интерпретатором"
"Оно как бы да, но это смотря а) как скомпилированна и б) с каким интерпретатором сравнивать..."
и у него получилось, что tcl уделал elixir в 2 раза. с го он не сравнивал, т.к. в го не умеет. а я не умею в tcl. но вроде бы что-то мне там даже удалось написать на этом tcl. но как-то так. на минимальном уровне

Alex
27.09.2017
07:59:33
было бы неплохо туда еще и голый erlang добавить с epoll

Alexey
27.09.2017
07:59:55
вот над этим сейчас как раз работаю
когда время нахожу )

Alex
27.09.2017
08:00:32
понятно)

Alexey
27.09.2017
08:01:02
но в принципе, тема - боян. и похожие исследования можно посмотреть
https://habrahabr.ru/post/306590/

Dmitry
27.09.2017
08:01:38
Я тебя вычислил

Alexey
27.09.2017
08:02:24
конечно! восстанавливаю справедливость. а то они частенько пишут, что в го такая же многозадачность, как в ерланг. так я мимо такого бреда ну никак пройти не могу

Dmitry
27.09.2017
08:02:28
По нику

Alexey
27.09.2017
08:02:38

Dmitry
27.09.2017
08:02:51
Так то ники разные

Nikita
27.09.2017
08:02:52
Господа, можете порекомендовать пакеты для атома (или не атома) для комфортной работы? Одного автокомплита маловато как-то оказывается, когда проект более-менее разрастается

Alexey
27.09.2017
08:03:13
а где у вас автокомплит работает?

Dmitry
27.09.2017
08:03:23
В эликсире работает

Google

Dmitry
27.09.2017
08:03:24
У меня

Nikita
27.09.2017
08:04:05
Сейчас использую atom + atom-elixir + linter-elixirc + language-elixir

Dmitry
27.09.2017
08:04:22
Spacemacs + layer elixir

Alexey
27.09.2017
08:04:51
в общем, в итоге, по поводу HTTP я всетаки нашел сервер H2O который даже по "неправильным" тестам от JMeter (который показывал разницу в 1.5 - 2 раза между ковбой и го) ну хоть чуть чуть, но порвал этот ваш Golang. на этом я успокоился и пошел таки спать

Nikita
27.09.2017
08:05:16
mac

Alex
27.09.2017
08:05:17
лучший автокомлит для атома это Visual Studio Code

Nikita
27.09.2017
08:05:39
Я бы и его попробывал, какие-то доп. пакеты нужны?

Dmitry
27.09.2017
08:06:04
В VSCOde тот же layer elixir от emacs
Всё из коробки
Даже иногда сам end дописывает после do

Nikita
27.09.2017
08:06:38
А интеграция с mix тасками есть какая-то? Чтобы на терминал постоянно не переключаться

Alex
27.09.2017
08:07:17
есть vscode-elixir

Dmitry
27.09.2017
08:08:07
Какие проблемы с терминалом, если он открывается через Ctrl+~
Как в кваке

Nikita
27.09.2017
08:09:06

Alex
27.09.2017
08:09:17

Alexey
27.09.2017
08:09:51
это козыри. мы обычно заканчиваем на том, что у них многозадачность никакая.

Dmitry
27.09.2017
08:10:08