Анализ и диагностика утечек памяти в запросах и расширениях PostgreSQL
-
Локализация логических утечек в сторонних C-расширениях и запросах на работающих серверах.
-
Обеспечение безопасного асинхронного доступа к локальной памяти изолированных фоновых воркеров.
-
Снижение трудозатрат разработчиков и стоимости поддержки СУБД при отладке сложного серверного кода.
-
Вычисление точной разности состояний иерархии MemoryContext до и после выполнения запроса.
-
Двухэтапная фильтрация ложных срабатываний через механизм прогрева кэшей и контролируемый откат транзакций.
-
Модернизированная сигнальная система ядра, позволяющая безопасно профилировать фоновые воркеры.
-
Управление параметрами поведения и вывода непосредственно внутри SQL-сессии.
-
Языки программирования: C (C99), SQL.
-
Окружение/СУБД: Postgresql 19devel, Linux/Unix-подобные ОС.
-
Сборочное окружение PGXS, компилятор GCC, утилита pgbench (для нагрузочного тестирования), система сборки Make.
-
Реализация режима автоматического анализа любого входящего несистемного SQL-запроса (при активации соответствующего параметра) для непрерывного выявления утечек.
-
Продвижение доработанного патча сигнального механизма для его интеграции в будущие мажорные версии ядра СУБД.
Проект технически завершен - основные цели достигнуты полностью: разработаны готовое C-расширение memleak_analyzer и патч ядра. Программа успешно прошла нагрузочное и регрессионное тестирование на PostgreSQL.
Высокая востребованность отечественных инструментов отладки в условиях перехода предприятий на PostgreSQL; Сокращение времени локализации утечек с часов до минут снижает стоимость сопровождения ПО; Предотвращение аварийных перезапусков СУБД исключает риски простоев бизнес-критичной инфраструктуры.
-
Расширение встраивается в процессы ядра, масштабируясь вместе с СУБД под любой параллельной нагрузкой.
-
Результаты выводятся через стандартный SQL, обеспечивая совместимость с любым внешним мониторингом.
-
Код, написанный на стандарте C99, переносим на любые Linux/Unix-платформы, поддерживающие PostgreSQL.
-
Язык С: максимальное быстродействие и бесшовная интеграция с СУБД.
-
Хуки исполнителя запросов: прозрачный автоматический перехват выполнения.
-
Субтранзакции: безопасный откат изменений для очистки памяти без влияния на транзакцию клиента.
-
Модернизированная сигнальная система: безопасный межпроцессный обмен без рисков взаимных блокировок и падений СУБД.
Новизна проекта - первый метод безопасного асинхронного профилирования локальной памяти изолированных процессов СУБД. В отличие от Valgrind/ASan, инструмент распознает иерархию MemoryContext, а в отличие от встроенных представлений PostgreSQL, решение автоматически вычисляет дельту снимков памяти и позволяет профилировать фоновые процессы напрямую из SQL.