
Arch
18.01.2018
11:04:26
a:=make(chan string)
close(a)
a=nil
fmt.Println(a==nil) // true

John
18.01.2018
11:05:22

Ilya
18.01.2018
11:05:49

Arch
18.01.2018
11:06:01

Google

John
18.01.2018
11:06:44

Arch
18.01.2018
11:06:55
Нельзя
не соберет - это утечка памяти, тк каналы между горутинами

John
18.01.2018
11:07:27

Arch
18.01.2018
11:07:32
и другая горутина закроется только если канал закрыл

John
18.01.2018
11:07:55
или через select

Arch
18.01.2018
11:08:30
и чо ?
так оно и сделано через селект
и пока я из писателя не закрою канал, горутина будет жить

John
18.01.2018
11:08:53

Arch
18.01.2018
11:08:53
а всемте с ней еще несколько соединений

Alexey
18.01.2018
11:09:22
Канал сделай структурой, где создай флаг: будет - закрыто/открыто

Google

Arch
18.01.2018
11:09:46
если юзер перелогинивается, надо старые каналы закрыть, новые огранизовать на их место
Если поверх перезаписать новые, то gc старые не закроет и память поедет

John
18.01.2018
11:10:47

nezorflame
18.01.2018
11:10:56
^this

Arch
18.01.2018
11:11:03

Ilya
18.01.2018
11:11:44

John
18.01.2018
11:11:52

nezorflame
18.01.2018
11:12:04
не, ну это не ок

John
18.01.2018
11:12:21

Arch
18.01.2018
11:12:57

Alexey
18.01.2018
11:13:09

Arch
18.01.2018
11:13:38
Про закрытие был вопрос, уже нет

nezorflame
18.01.2018
11:13:52
то, что канал спавнит, должно его закрывать
producer should close the channel
если не так - косяк в дизайне

Arch
18.01.2018
11:15:19
КЭПство. Понятно что он должен быть закрыт, но он может быть закрыт из нескольких мест, по этому при закрытии нужно проверит, а не закрыт ли он ранее

John
18.01.2018
11:15:34
Это говорит человек который предложил оставлять каналы на волю gc ?
Я тебе больше скажу - так много где написано https://stackoverflow.com/questions/8593645/is-it-ok-to-leave-a-channel-open Закрытие канала лишь информирует горутину которая слушает, что больше данных не будет :) Если у тебя так получется что закрытие каналов может быть вызвано несколько раз для одного и того же ... ну, это уже твой косяк :)

nezorflame
18.01.2018
11:15:48
вот то, что он из нескольких мест может быть закрыт - уже косяк

John
18.01.2018
11:15:51

Google

Arch
18.01.2018
11:17:56

nezorflame
18.01.2018
11:18:53
https://play.golang.org/p/CEO_flcINB
делайте закрытие значит тоже с помощью quit-канала
а эвент в него посылайте уже из функций
неважно какой - завершения приложения, или релогина
будет одна точка закрытия тогда

Arch
18.01.2018
11:20:54
капец костыли (

John
18.01.2018
11:21:09

nezorflame
18.01.2018
11:21:21
by design так

Arch
18.01.2018
11:21:53
сцуко, говэй, улыбнуло, вспомнилось питониквэй, где явное, лучше, чем не явное ???

John
18.01.2018
11:22:40

nezorflame
18.01.2018
11:22:41
ну и в целом, касательно первого вопроса про утечку памяти, ничего не потечет

nezorflame
18.01.2018
11:23:27
GC чистит неюзанный канал в любом случае, открыт он или закрыт

Arch
18.01.2018
11:23:31

yuriy
18.01.2018
11:23:38
Ребят, кто какую аналитику использует в го?

nezorflame
18.01.2018
11:23:54

Arch
18.01.2018
11:23:58

nezorflame
18.01.2018
11:24:05
уточнил

Arch
18.01.2018
11:24:18

nezorflame
18.01.2018
11:24:29
¯\_(ツ)_/¯

Google

nezorflame
18.01.2018
11:24:50

Arch
18.01.2018
11:25:14
close(a)
a=nil
Самый что ни наесть юзер фрэндли вариант получился

yuriy
18.01.2018
11:25:16
хочу трекать всякие ивенты на серваке и делать выборки потом

Alexey
18.01.2018
11:25:25

nezorflame
18.01.2018
11:25:28
вариков полно

Arch
18.01.2018
11:26:59
что значить НАДО???
Надо корректно завершить сервер, закрыть все соединения, скинуть всю инфу в базу.

nezorflame
18.01.2018
11:26:59
на прошлом месте юзали отправку эвентов в InfluxDB и смотрели через Grafana
сейчас через NewRelic

yuriy
18.01.2018
11:27:23
https://opensource.googleblog.com/2018/01/opencensus.html
вчера выкатили. но это чуть другое. это метрики перфоманса а мне еще пользовательские ивенты нужны

Admin
ERROR: S client not available

yuriy
18.01.2018
11:27:28
о нюрелик)))

nezorflame
18.01.2018
11:27:42
логи через Kibana

yuriy
18.01.2018
11:28:10
у меня мой проект поэтому позволить себе нюрелик не могу
но вообще история прикольная

nezorflame
18.01.2018
11:28:23
инфлюкс с графаной вполне себе варик
и настраивать не особо сложно
хотя графана умеет много сорсов http://docs.grafana.org/features/datasources/

yuriy
18.01.2018
11:30:13
ага заценю, спасибо!

John
18.01.2018
11:30:18

yuriy
18.01.2018
11:35:48
http://blog.egrik.ru/2016/01/influxdata-1-influxdb.html
а тик стэк кто-то использовал,
?

Google

nezorflame
18.01.2018
11:35:56
у нас щас тик
ненавижу его)

yuriy
18.01.2018
11:36:17
графана удобнее?

nezorflame
18.01.2018
11:36:32
тик постит эвенты в ньюрелик
а
стоп
не тот тик, проехали
подумал, что речь про https://github.com/TykTechnologies/tyk

John
18.01.2018
11:39:05
графана удобнее?
Графана - это просто морда. Сами же метрики собирает тик\графит\другая хрень

yuriy
18.01.2018
11:40:31
только с графаной
а чо с прометеем? кто-то использовал?
https://prometheus.io/docs/introduction/comparison/

Aleksandr
18.01.2018
11:44:13

yuriy
18.01.2018
11:44:43
я так понимаю он сильно навороченнее

Aleksandr
18.01.2018
11:45:31
и как впечатления?
ну как я помню девопсы говорят перфоманс лучше при тех же затратах, ну и да, всякие плюшки с типами (целых 4! насколько я помню), polling моделью и прочим

Mykyta
18.01.2018
11:48:06
Это говорит человек который предложил оставлять каналы на волю gc ?
Каналы прекрасно собираются сборщиком точно так же, как и все остальное. Просто проблема с каналами, что где-то чтение может заблочить горутину и она как зомби будет вечно висеть, а канал вместе с ней. Но в таких случаях для совсем упорных можно обернуть каналы в структуру, а туда какой-нить метод close(), и установить финализатор, чтобы наверняка!

yuriy
18.01.2018
11:55:39

Aleksandr
18.01.2018
11:59:31
спасибо прояснилось!
а еще есть замечательный node_exporter, который избавит вас от написания костылей для мониторинга железа

yuriy
18.01.2018
12:01:04
ага но он стек не сохраняет? хочу попробовать opencensus
сейчас пользуюсь фришным stackimpact