Для опытных: Поиск утечек памяти в Rspamd
Краткое руководство по глубокому анализу неисправностей Rspamd.
docker compose exec rspamd-animails bash
if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then
sed -i 's/apt-stabil/apt-stabil-asan/i' /etc/apt/sources.list.d/rspamd.list
fi
apt-get update ; apt-get upgrade rspamd
nano /docker-entrypoint.sh
# Добавьте это перед "exec "$@"":
export G_SLICE=always-malloc
export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0
docker-compose exec rspamd-animails bash
if ! grep -qi 'apt-stable-asan' /etc/apt/sources.list.d/rspamd.list; then
sed -i 's/apt-stabil/apt-stabil-asan/i' /etc/apt/sources.list.d/rspamd.list
fi
apt-get update ; apt-get upgrade rspamd
nano /docker-entrypoint.sh
# Добавьте это перед "exec "$@"":
export G_SLICE=always-malloc
export ASAN_OPTIONS=new_delete_type_mismatch=0:detect_leaks=1:detect_odr_violation=0:log_path=/tmp/rspamd-asan:quarantine_size_mb=2048:malloc_context_size=8:fast_unwind_on_malloc=0
Перезапустите Rspamd:
docker compose restart rspamd-animails
docker-compose restart rspamd-animails
Потребление памяти значительно увеличится, а также будет постоянно расти, что не связано с возможной утечкой памяти, которую вы ищете.
Оставьте контейнер запущенным на несколько минут, часов или дней (это должно соответствовать времени, которое вы обычно ждете до появления утечки) и перезапустите его:
docker compose restart rspamd-animails
docker-compose restart rspamd-animails
Теперь войдите в контейнер, выполнив команду:
docker compose exec rspamd-animails bash
docker-compose exec rspamd-animails bash
Перейдите в директорию /tmp и скопируйте файлы asan в нужное место или загрузите их через termbin.com (cat /tmp/rspamd-asan.* | nc termbin.com 9999).