kostyaBro
А кот эксперт по вебсерверверам просто, он всегда их рекомендует.
Но рекомендация неплохая
Feofan
kostyaBro
Вообще лучше оркестратор сервисов
kostyaBro
Ну это мое имхо
kostyaBro
Потом купить 16 малинок и вытыкать втыкать из и смотреть что ниче не ломается
kostyaBro
Вот неплохое например. Фронт не обязательно
Feofan
kostyaBro
Но писали скада систему и тз отлично подходит под деятельность компании
Eugene
Ребзя, всем привет
Появилась потребность в парсинге некоторых данных, вот решил для этой задачи выбрать go
В общем то это мое первое знакомство с ним, поэтому прошу сразу сорян, если вопрос "нубский"
Написал парсер, который выбирает с базы данных условно 20 URL
Затем добавляет их в канал
2 горутины парсят каждый URL и складывают по нем инфу в базу (условно код ответа сервера)
Появилась проблема которую не могу понять пока что
из любого количества записей всегда обрабатывает на 1 меньше
К примеру выбрали 20 обработалось 19 (Вставилось в базу)
Может быть я чего то не вижу
Ткните пожалуйста носом
Для простоты кода - в примере берем 20 записей из базы и проставляем всем код 200
https://go.dev/play/p/YnKBIkRdWTn
Vladislav
Andrey
Andrey
добавь waitgroup (чтоб наверника) и посмотри, изменится ли чтото
Eugene
Eugene
Emin Zalaev
пишу вот, как обычно, вебсервер. Сделал полное переиспользование всех объектов, теперь буквально 0 аллокаций, но код стал медленнее, чем с аллокациями. В CPU профайлере, практически всё время сжирает рантайм, в то время, как моя (единственная попавшая в список) функция, кушает меньше процента времени. Почему так может происходить? Неужели со всеми моими приколами, пошли промахи по кэш-линиям, перестало умещаться в кэш-память, или ещё какие железные штуки?
Gc много работает?
Кіт ✙
Andrey
а сколько у тебя рутин вообще? может много времени тратится на переключения контекста между ними. у меня когда-то была такая проблема
Кіт ✙
Кіт ✙
все изменения ведь касаются только парсера, а парсер не трогает горутины
Кіт ✙
есть ощущение, что по каким-то причинам, какие-то железные штуки перестали отрабатывать так, как делали это раньше
может, в кэш влезать перестало
Илья
в сравнении с прошлыми бенчами время выполнения стало меньше?
Andrey
Кіт ✙
ну так вот, раньше, без изменений в парсере, весь http сервер производил полный цикл обработки запроса за 3600нс (в случае с большым количеством заголовков). Сейчас он делает это за 5600нс
Кіт ✙
по памяти всё чисто - жрёт только аллокация мапы для заголовков ответа, и рантайм
Andrey
Кіт ✙
а во втором проходе, мы уже собственно парсим заголовки (просто нарезая буфер кусочками), и беря слайсы строк (для значений) со стэка
Илья
глазком пробежался по коду
и увидел много операций с каналами
Илья
пишу вот, как обычно, вебсервер. Сделал полное переиспользование всех объектов, теперь буквально 0 аллокаций, но код стал медленнее, чем с аллокациями. В CPU профайлере, практически всё время сжирает рантайм, в то время, как моя (единственная попавшая в список) функция, кушает меньше процента времени. Почему так может происходить? Неужели со всеми моими приколами, пошли промахи по кэш-линиям, перестало умещаться в кэш-память, или ещё какие железные штуки?
60% здесь это пробуждения
Кіт ✙
60% здесь это пробуждения
да, то есть, рантайм у меня сейчас фактически сжирает больше, чем сам код. И мне это кажется странным
Илья
ну так возьми графический профайлинг и посмотри
Кіт ✙
можно, конечно, попробовать go:nosplit на некоторые функции
Илья
Илья
по крайней мере будет понятнее
Илья
сделай бенч всей обработки запроса
anhckie
есть вариант как-то заэвойдить ответ от сервера "You need to enable JavaScript to run this app" при вызове его курлом?
anhckie
а-ля "включить js" для этого запроса, чтоб получить необходимый ответ вместо заглушки
Eugene
Обычно редирект делают
Изначально плюют заглушкк в которой должна выполнится JS потом редирект на морду сайта
Той же js
Если не сработал редирект ЖС то извини
Vladislav
Maks
kostyaBro
kostyaBro
anhckie
anhckie
в целом погуглил, обнаружил это морокой для себя и просто заюзал другой ресурс. но, если кто имел опыт решений такой ситуевины, велком )
kostyaBro
kostyaBro
вопрос риторический
Илья
kostyaBro
не надо ничего из дома вытягивать, особенно курсы валют
anhckie
где ава?
вернул, собакен настройки сбил, когда телефон лизал 🥲
Илья
я по нику сразу распознаю только Костю броу
kostyaBro
Илья
да
kostyaBro
разрешил еще 18к пользователям смотреть)
kostyaBro
даже самые официальные
kostyaBro
Илья
kostyaBro
или мосбиржу
kostyaBro
просто гениальная отсылка от нейросети, прям порадовала
Илья
он и не такое может
Илья
попробуй с ним тесты писать
kostyaBro
да скоро буду
kostyaBro
я нормально опробовал уже
kostyaBro
он доку за меня пишет
kostyaBro
но просто 42 прям зашло
kostyaBro
тела req resp для апи protobuf писать было одно удовольствие
kostyaBro
сразу с нужными аннотациями))
kostyaBro
а это в доке было
Или пишешь
If user with permission for ODO_XXX
а он такой
do request for ODO_YYY, user will receive 403 error.
kostyaBro
kostyaBro
кароче переучиваемся с Ctrl+с Ctrl+v на Tab Enter Tab Enter
Илья
я на боковую кнопку мыши поставил