Проекты
Конкурсные проекты

Анализ и диагностика утечек памяти в запросах и расширениях PostgreSQL


Тип участника:  Физическое лицо
Полное наименование организации/физического лица/авторского или творческого коллектива:  Тагаев Тимофей Викторович
Контактное лицо: ФИО:  Тагаев Тимофей Викторович
Идея и краткое описание ИТ-проекта:  Разработка специализированного ПО для автоматического поиска и локализации логических утечек операционной памяти в СУБД PostgreSQL. Проект состоит из C-расширения и модернизированного сигнального механизма ядра СУБД, позволяющих проводить дифференциальный памяти работающих процессов в режиме реального времени без перезапуска СУБД.
Перечень решаемых задач: 
  • Локализация логических утечек в сторонних C-расширениях и запросах на работающих серверах.

  • Обеспечение безопасного асинхронного доступа к локальной памяти изолированных фоновых воркеров.

  • Снижение трудозатрат разработчиков и стоимости поддержки СУБД при отладке сложного серверного кода.

Описание функциональных возможностей и элементов проекта: 
  • Вычисление точной разности состояний иерархии MemoryContext до и после выполнения запроса.

  • Двухэтапная фильтрация ложных срабатываний через механизм прогрева кэшей и контролируемый откат транзакций.

  • Модернизированная сигнальная система ядра, позволяющая безопасно профилировать фоновые воркеры.

  • Управление параметрами поведения и вывода непосредственно внутри SQL-сессии.

Дата внедрения (в случае, если предполагается запуск проекта в эксплуатацию):  -
Используемые платформы, средства разработки: 
  • Языки программирования: C (C99), SQL.

  • Окружение/СУБД: Postgresql 19devel, Linux/Unix-подобные ОС.

  • Сборочное окружение PGXS, компилятор GCC, утилита pgbench (для нагрузочного тестирования), система сборки Make.

Стоимость разработки системы:  Система была бесплатно разработана в рамках дипломной работы.
Средний размер ежегодных затрат на эксплуатацию:  0 рублей при штатной эксплуатации - инструмент поставляется в виде легковесного ПО, функционирует на существующих серверах базы данных и не потребляет ресурсы в пассивном режиме.
Перспективы развития: 
  • Реализация режима автоматического анализа любого входящего несистемного SQL-запроса (при активации соответствующего параметра) для непрерывного выявления утечек.

  • Продвижение доработанного патча сигнального механизма для его интеграции в будущие мажорные версии ядра СУБД.

Достижение поставленных целей: 

Проект технически завершен - основные цели достигнуты полностью: разработаны готовое C-расширение memleak_analyzer и патч ядра. Программа успешно прошла нагрузочное и регрессионное тестирование на PostgreSQL.

Актуальность, экономическая или социальная полезность: 

Высокая востребованность отечественных инструментов отладки в условиях перехода предприятий на PostgreSQL; Сокращение времени локализации утечек с часов до минут снижает стоимость сопровождения ПО; Предотвращение аварийных перезапусков СУБД исключает риски простоев бизнес-критичной инфраструктуры.

Масштабируемость, способность к взаимодействию с другими системами, мобильность: 
  • Расширение встраивается в процессы ядра, масштабируясь вместе с СУБД под любой параллельной нагрузкой.

  • Результаты выводятся через стандартный SQL, обеспечивая совместимость с любым внешним мониторингом.

  • Код, написанный на стандарте C99, переносим на любые Linux/Unix-платформы, поддерживающие PostgreSQL.

Обоснованность применяемых проектных решений: 
  • Язык С: максимальное быстродействие и бесшовная интеграция с СУБД.

  • Хуки исполнителя запросов: прозрачный автоматический перехват выполнения.

  • Субтранзакции: безопасный откат изменений для очистки памяти без влияния на транзакцию клиента.

  • Модернизированная сигнальная система: безопасный межпроцессный обмен без рисков взаимных блокировок и падений СУБД.

Оригинальность, новизна, отличие от аналогов либо отсутствие аналогов: 

Новизна проекта - первый метод безопасного асинхронного профилирования локальной памяти изолированных процессов СУБД. В отличие от Valgrind/ASan, инструмент распознает иерархию MemoryContext, а в отличие от встроенных представлений PostgreSQL, решение автоматически вычисляет дельту снимков памяти и позволяет профилировать фоновые процессы напрямую из SQL.

Гарантирую достоверность предоставленной в заявке информации. Подтверждаю, что организация не находится в состоянии ликвидации, банкротства, реорганизации (Только для организаций):  Да
Презентация проекта pdf:  Загрузить
Возврат к списку
нет доступа к комментариям Авторизоваться