Daniel
пока у нас все более-менее в порядке, на самом деле, с тех пор как мы научились вендорить
Daniel
другое дело, что вендоринг создает дополнительные проблемы
Daniel
а, может быть, дело не в вендоринге, а в отсутствии общепринятого workflow и в отсутствии средств контроля library api
Daniel
возможно, нам нужна тулза, которая при вендоринге будет делать слепок api, и при апдейте сравнивать, осталась ли совместимость. если нет - не будет апдейтить (или будет до последнего совместимого коммита, или еще как)
Мерль
я думаю оно со временем устаканится
и будем мы проектировать мощные api с параноидальной обратной совместимостью
Daniel
я вот думаю - устаканится нейминг для веток
Ivan
Ничто не помешает авторам менять поведение метода. Как это проверить? Внешне сигнатура не поменялась, а внутри происходит не то, что раньше
Мерль
Daniel
Daniel
Daniel
но в перле, например, где есть и cpanfile с фиксацией версии, и центральная репа, я регулярно въезжал в проблемы совместимости. так что универсальная таблетка не придумана пока
Мерль
ну такое всегда на совести разработчика
Daniel
не совсем
Daniel
не будь у нас фиксации версий - проблемы бы не могли накопиться
Ivan
Это первый уровень... дальше ведь транзитивные зависимости, когда проект зависит от двух либ, которые зависят от разных версий третьей либы 😱
Мерль
Мерль
* их вообще не должно быть по-хорошему
Oleg
Alexander
Коллеги, очень нужна помощь экспертов.
Кейс: надо делать очень много асинхронных http запросов в чужие сервисы (RTB) с установленным таймаутом.
Как сделали: в гоурутинах создаем http.Client с таймаутом.
Проблема: многие коннекты отваливаются по таймауту, даже те, которые гарантированно успевают ответить. По-видимому, переключение гоурутин происходит с запазданием, а таймер таймаута продолжает увеличиваться, пока не переключится на эту гоурутину, хотя сервис уже ответил/готов ответить быстро.
Как решить данную проблему?
Konstantin
Может контекст с таймаутом в рутины передавать...
Alexander
Тоже об этом думал, но с точки зрения рантайма чем это отличается от таймаута в хттп клиенте?
Alexander
Вот у меня есть группа http запросов (допустим, 50), и мне надо, чтобы они гарантированно выполнились, либо закрылись через 100 мс после старта. Правильно ли я понимаю, что это надо создать для них глобальный контекст с таймаутом? В таком случае есть ли гарантия, что гоурутины с этими запросами будут активированы хоть раз до наступления этого таймаута?
Daniel
А сколько у вас ядер, какова на них нагрузка и чему равна GOMAXPROCS?
Alexander
32 ядра, нагрузка около 15%, GOMAXPROCS не выставляю, так как, насколько мне известно, с 1.5 версии она равна количеству ядер
Dmitriy
Off-topic: так и знал, что этот баннер на гиктаймсе нарочно программно появляется позже, чтобы цтр понять
Alexander
Вы думаете, что CPU не справляется?
Daniel
Думал, но нет
Daniel
А коннектов сколько?
Alexander
Много) Тысячи. Но сейчас модуль написан на Scala и справляется
Daniel
Эт понятно
Daniel
А если поднять GOMAXPROCS до, скажем, 500 - изменится ситуация?
Daniel
Мне любопытно
Alexander
Надо попробовать
Ilya
Имеет смысл посмотреть в сторону runtime.LockOSThread()
Ilya
Но с колвом потоков все равно придется шаманить
Daniel
Да вот непонятно
Daniel
Надо диагностику проводить
Daniel
А какой там таймаут?
Alexander
100 мс
Alexander
Короче проблема вроде стала более ясна
Alexander
У нас количество коннектов никак не ограничено пулом
Alexander
Надо сделать пул коннектов
Alexander
Иначе серверу становится плохо
Alexander
Никто не знает, как через стандартную либу сделать пул? Там есть что-нибудь встроенное?
Alexander
http.Transport похоже
Максим
Есть у кого то примеры работы с eventlog на windows? Библиотека есть, а примеров нет
Daniel
А в чем это плохо выражается?
Alexander
Daniel
Я про то, во что оно упирается
Alexander
GC начинает долго работать
Alexander
По полсекунды
Vladimir
Alexander
Вот так это в графане выглядит
Антон
а это точно пауза?
Alexander
1.8
Vladimir
Alexander
Раз в 15 сек
Vladimir
Daniel
Но сами паузы должны быть короткие
Vladimir
Alexander
Daniel
:)
Daniel
Нам же обещали короткий stoptheworld
Vladimir
Vladimir
пойми
Michael
в 1.9 ещё короче вроде
Vladimir
если ты нагенерил 60-80ГБ мусора мелкими объектами то у тебя stop the world будет огромным
Anonymous
Алогритмы те же, что и в JVM, если память меня сейчас не подводит
Vladimir
что бы ты ни делал
Антон
он больше информации даёт. И размеры мусора будут видно
Michael
но что в 1.8 и в 1.9 начинал gc дольше работать т.к. создавалась мнооого замыканий
Vladimir