@proGO

Страница 1612 из 1674
Dorian
04.08.2018
15:00:17
Может если проц позволяет, то инсерт делать тоже в горутинах?

Alexander
04.08.2018
15:01:49
А на сколько обьем выставляли?
Ну 100. Но там на 20 сообщений в секунду cpu отдирается. Мало того, как я писал, я убирал одну еорутину и делал без буфера - картина та же.

Лемур
04.08.2018
15:02:50
Говорят, можно прямо в прод сунуть с включеным профайлом потому, что оверхед не большой

Google
Pavel
04.08.2018
15:06:08
В проде вроде его можно включать http запросом на определенное время. В остальное время он не активен.

Лемур
04.08.2018
15:07:11
В проде вроде его можно включать http запросом на определенное время. В остальное время он не активен.
Разные варианты, в общем. Делается двумя строчками и профит очевидный.

Pavel
04.08.2018
15:08:28
Главное для всего интернета этот порт не открывайте.

Alexander
04.08.2018
15:09:20
https://flaviocopes.com/golang-profiling/ На пальцах объясняют как снять профиль и понять что тормозит
Я же уже писал - я снимал профиль. Когда монгу убрал - в топе runtime.scanobject какой-то.

Daniel
04.08.2018
15:09:59
и что профиль?

Лемур
04.08.2018
15:16:46
Там сразу понятно где он вызывается

Alexander
04.08.2018
15:20:16
Там сразу понятно где он вызывается
Там кода-то страница. Сейчас скриншот пришлю.

Лемур
04.08.2018
15:20:40
Горшочек не вари

Умываю руки)

Vadim
04.08.2018
15:27:38
Там кода-то страница. Сейчас скриншот пришлю.
У вас там нет такого, что вы на каждый запрос вызываете mgo.Dial ?

Dmitri
04.08.2018
15:28:06
Wrapper?
И не враппер. Вся соль в том, что из возвращаемой функции виден контекст функции, из которой ее вернули

Google
Alexander
04.08.2018
15:28:33
Делаю граф

Vadim
04.08.2018
15:29:16
А сколько gomaxprocs?

Alexander
04.08.2018
15:30:53
я делал два - тоже самое что и не установлено

ловите

Vadim
04.08.2018
15:31:30
Try to run it after: export GOMAXPROCS=4 This should drop that timing a lot. Some of the design decisions on mgo were made with scalability and concurrency in mind. It performs well if you allow it to use more threads, and it should continue to perform well under quite a bit of abuse when you do more stuff concurrently with whatever else is being done. [1] On Thu, Mar 28, 2013 at 6:55 PM, <mbil...@gmail.com> wrote: > Perhaps I'm doing something wrong in here? mongod doesn't seem to be > sweating running either program. If you can send an example that is self-contained, including the data creation bits, I can run it here as well to compare. Otherwise, I have no idea about how you're exercising that code, which makes it harder to help. [1] Out of coincidence, this was posted today: https://github.com/rossan/kuenea Look at the timings there.

Alexander
04.08.2018
15:32:06
смотрите, я убрал монгу, заменил на rethink - но 20% всё равно много



для наглядности

Dorian
04.08.2018
15:34:38
Сборщик мусора выедает

Vadim
04.08.2018
15:35:56
Угу

https://www.mongodb.com/blog/post/running-mongodb-queries-concurrently-with-go

Alexander
04.08.2018
15:37:52
Сборщик мусора выедает
Я извиняюсь, но он выедает как питон. Как такое возможно.

Daniel
04.08.2018
15:38:49
Сборщик мусора выедает
это что за чушь?

Alexander
04.08.2018
15:38:55
Там по сути один malloc на сообщение и free после базы. 10 сообщений в секунду, какой ещё сборщик?!?

Dorian
04.08.2018
15:39:25
это что за чушь?
По третьей строке в консоли сделал вывод. Поправьте

Alexander
04.08.2018
15:39:42
Народ, это профиль с rethink. Я отключил монгу - с ней вообще жутко.

Daniel
04.08.2018
15:40:18
коллега, у вас там подземный стук

Dorian
04.08.2018
15:41:00
А по делу?

Alexander
04.08.2018
15:52:58
Я на го два дня, но мне тоже подумалось что scanobjects это гц

Google
Dorian
04.08.2018
15:55:35
mallocgc это что-то другое?

Вроде аллокейт и скан как раз об этом. Не утверждаю, но предполагаю

Pavel
04.08.2018
15:57:43
Я на го два дня, но мне тоже подумалось что scanobjects это гц
Дак может вы посмотрите где вы объекты создаёте?

Или попробуете комментить код кусками и профайл запускать и посмотреть после отключения каких строк тормозить перестаёт.

Pavel
04.08.2018
16:00:35
Там кода страница - только в readjson
Закомментировать страницу и посмотреть на перформанс не пробовали?

Monkey debug 101

Ещё у вас там светится синк мэп, конвертация типов, коннект к h2 серверу.

Там кода страница - только в readjson
Закомментируйте строку вставки в базу в цикле и проверьте.

Alexander
04.08.2018
16:09:30
Закомментируйте строку вставки в базу в цикле и проверьте.
так я тоже же писал - уже делал. без вставки в базу - оно ~2% CPU, т.е. это конечно лучше чем 20%, но даже для простого чтения из ws что-то не мало.

Pavel
04.08.2018
16:10:29
Проблема в 2% CPU?

Программу можно не запускать и тогда будет 0% CPU — вообще идеал. Если это ваша цель.

И время на разработку можно не тратить.

Alexander
04.08.2018
16:14:31
2% CPU для практически ничего не делающей программы - это прилично ИМХО.

Daniel
04.08.2018
16:14:42
Нет

Alexander
04.08.2018
16:15:16
я бы ожидал не более 5% целиком от этой программы, в идеале 2%. но тут 20%

Pavel
04.08.2018
16:15:46
Alexander
04.08.2018
16:16:00
Нет
ok, давайте так, я ожидал что go будет быстрее nodejs, а он прилично медленее на данном примере у меня. я не понимаю почему - может я что-то не так, или у меня завышенные ожидания к го были?

Daniel
04.08.2018
16:16:45
А не должен быть

Pavel
04.08.2018
16:17:06
А был уже вопрос сколько сообщений в секунду обрабатывает программа при 2% CPU?

Google
Daniel
04.08.2018
16:17:14
Ваша задача должна в базу упираться

Alexander
04.08.2018
16:17:34
Ваша задача должна в базу упираться
во-вот, у меня упора в базу даже близко нет. так как аналогичное не на go легко переваривает прилично больший поток.

Daniel
04.08.2018
16:19:46
Значит, что-то не так вы написали

Alexander
04.08.2018
16:20:14
я выше показал примитивный код + прислал профиль. подскажите что именно.

Daniel
04.08.2018
16:20:18
Если уж совсем надо - кладите на гитхаб, я гляну вечером

Pavel
04.08.2018
16:20:26
удачи

(везде замените, а не в одном месте)

чет я вангую что это поможет

Alexander
04.08.2018
16:23:17
Если уж совсем надо - кладите на гитхаб, я гляну вечером
код для rethink: https://gist.github.com/inv2004/0a9f256e41124dcc4fa86d238f8a2138

чет я вангую что это поможет
я уже убрал Message и заменил на map[string]

в канал тоже &map[string] класть? хотя врядли

Pavel
04.08.2018
16:26:30
попробуйте с &Message

Daniel
04.08.2018
16:26:37
Мап можно без указателя класть

Alexander
04.08.2018
16:27:46
опять же - я переписал это всё без промежуточного буфера (но тогда с монгой) - и всё было так же печально

Pavel
04.08.2018
16:30:29
попробуйте с &Message
и без вставки в базу

но вообще я чет сижу и думаю

Alexander
04.08.2018
16:31:46
и без вставки в базу
ну я конечно понимаю что можно ещё и хтение убрать из ws :)

Pavel
04.08.2018
16:32:03
вы паритесь, расслабьтесь

Google
Alexander
04.08.2018
16:32:22
но в целом всё так: mongo (оффициальный) - 100% cpu mgo - 75% rethink - 20%

Pavel
04.08.2018
16:32:59
почему вы загружаете себя проблемой 2% CPU?

Alexander
04.08.2018
16:33:28
почему вы загружаете себя проблемой 2% CPU?
2% если не вставлять в базу! но это много для простого чтения json. потому что в идеале бы в 2% уложить вообще всё.

Pavel
04.08.2018
16:33:51
раз у вас нет бюджета на чтение json, то может не читать его?

я имею ввиду, у вас там кто-то умрет от лишних 2% CPU?

в чем ценность оптимизации?

сколько денег сэкономите?

Alexander
04.08.2018
16:35:16
если каждая примитивная операция будет 2%, то серверов надо будет пачку вместо одного

и кстати

смотрите, никто не умрёт, кроме реализации на go, так как на nodejs это работает (более экономично по бюджету).

Dorian
04.08.2018
16:36:36
А какие мощща если не секрет?

Alexander
04.08.2018
16:37:14
А какие мощща если не секрет?
сейчас никакие - я просто гоняю это на каком-тодешёвом digitalocean для проверки.

Pavel
04.08.2018
16:37:31
смотрите, никто не умрёт, кроме реализации на go, так как на nodejs это работает (более экономично по бюджету).
если бюджет критичен, то зачем вы вообще потратили 2 дня бюджета на это ГОвно? ?

в общем кроме как на &Message заменить все у меня идей нет, плюс я так же не очень понял от чего вы экономите время CPU, а не свое

Alexander
04.08.2018
16:40:16
я думаю я лучше сэкономлю на переписывании того что я писал выше - я ожидал что go будет прилично быстрее и его можно будет внедрять дальше, но пока не оправдываются надежды, или я не заметил какой-то косяк усебя в коде.

Vadim
04.08.2018
16:43:26
сейчас никакие - я просто гоняю это на каком-тодешёвом digitalocean для проверки.
А node на этом сервере сколько даёт? Почему бы не использовать горутины, mgo был написан под конкьюренси. Скиньте код, пожалуйста, тогда можно уже будет посмотреть.

Alexander
04.08.2018
16:44:10
А node на этом сервере сколько даёт? Почему бы не использовать горутины, mgo был написан под конкьюренси. Скиньте код, пожалуйста, тогда можно уже будет посмотреть.
это флеш-моб такой в чате - не посмотрев код уже что-то посоветовать? тем более я код уже два раза скинул минимум.

Daniel
04.08.2018
16:44:27
Там выше есть ссылка на гитхаб

Я, правда, ночью только до нее доберусь

Alexander
04.08.2018
16:44:45
есть ссылка на gist для mongodb и для rethinkdb

Страница 1612 из 1674