Anton
Я не то чтобы очень давно "на работах работаю", но немного удивляюсь, откуда у здешних активистов столько времени на чаты :) Я всё рабочее время занят именно рабочими задачами, о подработках на фрилансе и т.п. даже не помышляю.
Vladislav
gboost
Безработные мы
Ned
Nikita
Vladislav
Парт-тайм?
а ты еще учиться дальше планируешь?
Vladislav
есть варианты с летними стажировками, например
Ned
Ned
Потом на лето уже что-то помощнее
Vladislav
еще в ШАД можно попробовать, кстати
Vladislav
после него с руками оторвут
Ned
gboost
Стажировка оплачиваемая?
Nikita
Anton
Мне бы по кайфу было написать драйвер, пообщаться с ядром, поработать с сетью, протоколами-интерфейсами, итд
Я сам недавно искал работу по очень похожим критериям. С той лишь разницей, что вышка у меня была, т.е. фактически после вуза. Не могу сказать, что были какие-то сложности. Пробовал себя в конторах, занимающихся всяким телекомом, в основном на DPI-проекты (конъюнктура видимо нынче такая). Везде рассказывал про свой диплом. Других видных достижений у меня нет. Занял в итоге должность стронг-джуна (как мне сказали HR), хотя в инфотексе на мидла взять хотели (судя по предложенной зп:), хотя хз, я в этих вилках и градациях ещё слабо ориентируюсь).
gboost
3.7к за месяц?
Vladislav
Vladislav
или это в баксах?)
Nikita
Alexey
джун в москве на стажировках(или как оно называется) получает 20-30к за 20-25 часов в неделю +-.
Nikita
gboost
Nikita
Alexey
gboost
По каким ключевым?
gboost
Знаю шаблоны, ооп, стл.
Приходится изучать веб, потому что по с++ вакансии найти не выходит.
В найденных обязателен стек каких-то технологий.
Matwey
Каких технологий? Все спрашивают "программирование под linux", stl, boost
Matwey
Ну, меня по крайней мере
Matwey
Я конечно не репрезентативен
Anton
Billy
господа, есть проблема. нужны идеи.
дано: бэкенд сервис на с++. крайне высоко нагруженный, аля 60-120к клиентов подклчено на хосте. Они все чета делают. Код в сервисе можно менять в пределах разумного.
Известно, что течет память.
Надо найти что течет.
Как это сделать?
один из вариантов валгринд, но не хотелось бы. потому что проверяли с 2-3 клиентами и все ок. Проблема только с продакшн трафиком. Заправляли продакшн траф когда все под валгриндом, все вставало колом ясно дело.
Какие еще идеи как можно узнать какие объекты ликают? кто подобные задачки решал ?
спасибо
Update: Код не мой, достался в наследство. База старая, вся из 2007 года применрно. с базальтовыми наслоениями патернов вплоть до 2015го. черт ноги слоамет там.
Constantine
а дампы с памяти и посмотреть, что утекло не получится?
Constantine
записи снять с хипы?
Constantine
информация о размере и содержимом блоков очень часто позволяет понять, втф
Constantine
по личному опыту, самая частая причина утечки в современном С++ коде (без явных аллокаций памяти) это отсутствие виртуальных деструкторов, поэтому крайне рекомендую следующее
1. Объявить глобальный класс NotFinal с виртуальным деструктором
2. Для каждого класса либо деструктор protected, либо класс final и деструктор его предка protected, либо класс наследует какой-то другой (снизу - NotFinal)
Constantine
кажется, осилил формализовать @ZedDead
ttldtor
а шланговый asan тоже раком поставит сервис?
Constantine
любой рантайм хип чекер раком поставит
Billy
@droz
Алокаций происходит овердохуя просто. размеры алокаций в среднем 15КБ на соединений в пике до 1МБ.
А как снять дампы с памяти?
Как сделать записть с хипы?
Billy
@m4n медленный кусок гуана этот шланг с асаном, пробовали
Vladislav
Nikita
Billy
у каждого клиента свой пул и так, когда клиент умирает то там асерты стоят что пул пустой должен быть. асерты не срабатывают. асерты не отключены :)
Constantine
нужно сведения о примерном уровне legacy pre-C++11 кода без умных указателей и прочих прелестей
Nikita
Ioann_
Ioann_
Если у тебя Студия, то там кстати можно снапшоты памяти снимать
Nikita
Constantine
По личному опыту, на втором месте в списке утечек памяти находятся крайне неприятные неявные утечки, когда память на самом деле утекает из-за вечного хранения записей, на которые имеются ссылки. Например, у вас есть какая-то глобальная мапа, которая не очищается, глобальный пул, в котором хранятся записи, циклы из shared_ptr или вечно хранимые weak_ptr с утекающим control block
Nikita
Billy
Там нету умных указателей от слова совсем. Может только в позднем коде и то по пальцам посчитать буквально. Не шучу.
new/delete уже перегружены, но туда пока не лазили. перегружены вроде как правльно. по крайней мере когда на них грешили, то ошибки там не нашли.
Студией воспользоваться нельзя, это собирается gcc в докере
Billy
@webreh Ага, спасибо. запишу в список проверить.
ttldtor
уже перегружены... так и запиешм... не лазили
Constantine
Если у вас legacy pre-C++11 код без умных указателей, я могу лишь предложить вам снять дамп всей памяти с сервера в состоянии утечки и рассматривать с микроскопом, что же за мусор там валяется
Ioann_
Constantine
если там объектные пулы, то там сложно просто так утечь
Ioann_
Я раньше именно так и отлаживал утечки
Constantine
а вот все виртуальные деструкторы нужно проверить обязательно, пока я вижу что-то очень похожее на такую проблему
Billy
да завтра проверим, спасибо
Timur
Если утечки большие, очень большие, то найти их просто: статистически любой рандомный адрес в используемой памяти с большой долей вероятности будет утечкой. Трюк найти место откуда его аллоцировали
Vladislav
Anton
господа, есть проблема. нужны идеи.
дано: бэкенд сервис на с++. крайне высоко нагруженный, аля 60-120к клиентов подклчено на хосте. Они все чета делают. Код в сервисе можно менять в пределах разумного.
Известно, что течет память.
Надо найти что течет.
Как это сделать?
один из вариантов валгринд, но не хотелось бы. потому что проверяли с 2-3 клиентами и все ок. Проблема только с продакшн трафиком. Заправляли продакшн траф когда все под валгриндом, все вставало колом ясно дело.
Какие еще идеи как можно узнать какие объекты ликают? кто подобные задачки решал ?
спасибо
Update: Код не мой, достался в наследство. База старая, вся из 2007 года применрно. с базальтовыми наслоениями патернов вплоть до 2015го. черт ноги слоамет там.
Т.е. изучали только две крайние ситуации: когда подключений очень мало и когда их очень много? Может попробовать снять продакшн-трафик разной интенсивности и погонять tcpreplay'ем, например? Начать с середины (30к): течёт - идём в левый подотрезок, не течёт - в правый. Дихотомия быстрая :) Может окажется, что нижнюю границу уже получится валгринду или асану скормить.
Ну а так - мы обычно корку ковыряем в подобных случаях.
Evgenii
Berkus
или уебаны, или не платят, но могу подкинуть одного дядечку, он скорее всего до сих пор на С++ под винды пилит свой софт - нужен разговорный английский само собой
Berkus
собсно мне интересно зачем при наличии кланга/lld народ до сих пор собирает на mingw...
Berkus
Berkus
но запаситесь памятью
Berkus
Berkus
+
Billy
Billy
Метрики есть на все. По ним поняли. Ну и если у хоста 120к и выше то там память просто кончается за 1 день
Berkus
начните со статического анализатора кода