Size: a a a

Rust — русскоговорящее сообществo

2020 August 27

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Khachatur Harutyunyan
Кто-нибудь сталкивался с memory leaks в растовском клиенте Aerospike - a? A именно при вызове batch_get  ?
Ты уверен, что это именно утечка памяти а не просто жадный аллокатор?
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
По идее, штуки типа valgrind должны работать лучше чем пристальный взгляд на код всех зависимостей
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Mikail Bagishov
Ты уверен, что это именно утечка памяти а не просто жадный аллокатор?
насколько жадный ? за несколько часов гигабайты уходят
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
То есть потребление памяти просто равномерно растер при постоянной нагрузке?
Тогда да, похоже на утечку.
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Roman
Куда кладет? Куда девается таск?
такс в скопе потока создается
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Mikail Bagishov
То есть потребление памяти просто равномерно растер при постоянной нагрузке?
Тогда да, похоже на утечку.
именно
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Mikail Bagishov
По идее, штуки типа valgrind должны работать лучше чем пристальный взгляд на код всех зависимостей
Для поиска утечек памяти есть специальные инструменты, типа valgrind.
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Khachatur Harutyunyan
именно
через день приходится сервера перезагружать
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Mikail Bagishov
Для поиска утечек памяти есть специальные инструменты, типа valgrind.
с валгрид знаком, просто для этого нужно еще, чтоб сервер грейсфул выходил
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Khachatur Harutyunyan
с валгрид знаком, просто для этого нужно еще, чтоб сервер грейсфул выходил
хотя можно и отдельно протестировать
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Вопрос был собственно к тому, что может кто сталкивался
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Еще по идее можно написать собственный мини-детектор-утечек памяти.
Надо переопределить глобальный аллокатор.
Обертка должна перехватывать запросы и к каждому дополнительно сохранять например бэктрейс момента его создания.
Тогда в любой момент времени можно снять дампы вида "такое-то место в исходном коде выделило столько-то объектов".
Ну и этого должно хватить для поиска утечек.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Не знаю, насколько это осмысленно правда.
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Mikail Bagishov
Еще по идее можно написать собственный мини-детектор-утечек памяти.
Надо переопределить глобальный аллокатор.
Обертка должна перехватывать запросы и к каждому дополнительно сохранять например бэктрейс момента его создания.
Тогда в любой момент времени можно снять дампы вида "такое-то место в исходном коде выделило столько-то объектов".
Ну и этого должно хватить для поиска утечек.
Можно всё конечно. Просто когда сроки поджимают, то пока не до этого
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Я вот спросил может кто сталкивался и можт костыль нашел к нему, или workaround
источник
2020 August 28

V

Vladimir in Rust — русскоговорящее сообществo
Khachatur Harutyunyan
с валгрид знаком, просто для этого нужно еще, чтоб сервер грейсфул выходил
Heaptrack попробуй или https://github.com/koute/memory-profiler
Если много теряешь, то даже грейсфул шатдавн не обязателен
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Изначальный вопрос в следующем.
let task = unsafe {
   mem::transmute::<Box<Task + Send + 'scope>,
                    Box<Task + Send + 'static>>(Box::new(job))
}
;

удалится ли то, что внутри task а при выходе из скопа ?
источник

V

Vladimir in Rust — русскоговорящее сообществo
Khachatur Harutyunyan
Я вот спросил может кто сталкивался и можт костыль нашел к нему, или workaround
Тот код что ты скинул не понятно без использования содержит ли утечку. В расте утечки возможны и в сейф приложении, так что на это не ориентируйся
источник

KH

Khachatur Harutyunya... in Rust — русскоговорящее сообществo
Vladimir
Heaptrack попробуй или https://github.com/koute/memory-profiler
Если много теряешь, то даже грейсфул шатдавн не обязателен
ок, попробую
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Khachatur Harutyunyan
Изначальный вопрос в следующем.
let task = unsafe {
   mem::transmute::<Box<Task + Send + 'scope>,
                    Box<Task + Send + 'static>>(Box::new(job))
}
;

удалится ли то, что внутри task а при выходе из скопа ?
На конкретно этот вопрос ответ "да, все равно удалится". Box никуда не делся, просто поменялся хранимый им тип. (Ну и новый тип совместим со старым).
источник