На основе экспериментальных данных и анализа представлено руководство по оптимизации ядра Linux для серверов PostgreSQL, испытывающих высокую нагрузку с преобладанием операций чтения — типичную для аналитических запросов, отчётов и систем обработки данных. Цель настройки — полностью раскрыть потенциал современного оборудования путём точной коррекции ключевых параметров, отвечающих за работу с памятью, дисковыми операциями и распределением задач процессора. Особое внимание уделяется использованию высокоскоростных накопителей SSD/NVMe и значительных объёмов оперативной памяти для снижения задержек и повышения эффективности кэширования данных.
https://dzen.ru/a/aV9Gfga-OSe4FqHj
https://dzen.ru/a/aV9Gfga-OSe4FqHj
На основе анализа отчёта о производительности выявлены три критические проблемы:
1)критическая нехватка оперативной памяти (RAM <5%),
2)сильный bottleneck ввода-вывода (высокий cpu_wa, процессы в состоянии 'D')
3)конкуренция за CPU из-за блокировок.
Следующие 10 параметров ОС Linux подобраны и ранжированы специально для устранения этих узких мест в текущей конфигурации. Оптимизация направлена на стабилизацию памяти, снижение задержек ввода-вывода и более эффективное использование процессорных ресурсов.
https://dzen.ru/a/aV9NG7dTWFeYToP4
1)критическая нехватка оперативной памяти (RAM <5%),
2)сильный bottleneck ввода-вывода (высокий cpu_wa, процессы в состоянии 'D')
3)конкуренция за CPU из-за блокировок.
Следующие 10 параметров ОС Linux подобраны и ранжированы специально для устранения этих узких мест в текущей конфигурации. Оптимизация направлена на стабилизацию памяти, снижение задержек ввода-вывода и более эффективное использование процессорных ресурсов.
https://dzen.ru/a/aV9NG7dTWFeYToP4
This media is not supported in your browser
VIEW IN TELEGRAM
Для того, чтобы взлететь, нужно- сначала аккуратно настроить.
https://dzen.ru/suite/b24d3891-f09a-4076-82e2-c6ec42bb581f
https://dzen.ru/suite/b24d3891-f09a-4076-82e2-c6ec42bb581f
Данный чек-лист представляет собой структурированное руководство по оптимизации операционной системы Linux для развертывания высоконагруженных систем управления базами данных (СУБД). Он основан на анализе критических проблем производительности, таких как высокий I/O wait, блокировка процессов и неэффективное использование памяти. Материал систематизирован по приоритетам — от критических изменений, без которых невозможна стабильная работа, до тонкой настройки для достижения максимальной эффективности. Следуя этим рекомендациям, администраторы смогут значительно повысить отказоустойчивость и скорость отклика инфраструктуры, особенно в средах с интенсивной транзакционной (OLTP) или аналитической (OLAP) нагрузкой.
https://dzen.ru/a/aV9ygh51Ij69nyLY
https://dzen.ru/a/aV9ygh51Ij69nyLY
Вопрос
какой вариант более эффективен - развивать собственный личный бренд pg_expecto и надеяться , что потенциальный вендор заметит(а тема интересна и потенциальна для развития только вендорам) или активно предлагать и рекламировать потенциальным вендорам идею и проект ?
Ответ нейросети:
Отличный и очень практичный вопрос. Оба подхода имеют право на жизнь, но в вашем случае (нишевый проект, интересный в первую очередь вендорам) эффективность будет разной.
Вариант 1: Развивать личный бренд и ждать, пока вендор заметит
Плюсы:
· Долгосрочный актив: Сильный личный бренд в области PostgreSQL принесет дивиденды далеко за пределами одного проекта (консультации, доклады, карьерный рост).
· Естественный отбор: Вендор, который найдет вас сам, будет более мотивирован. Это сигнал истинного интереса.
· Рост авторитета: Постепенно вы станете экспертом, и ваше мнение (и ваш проект) будут больше ценить.
· Создание сообщества: Вокруг бренда могут собраться единомышленники, которые помогут развивать проект.
Минусы и риски:
· Очень долгий срок окупаемости: На построение бренда, который заметят нужные люди в крупных компаниях, могут уйти годы.
· Риск «незаметности»: Мир PostgreSQL огромен. Проект pg_expecto, даже будучи отличным, может затеряться в шуме. Вендоры следят за трендами, но не за всем подряд.
· Упущенное время: Пока вы ждете, кто-то другой может создать аналогичный инструмент и начать активно его продвигать.
Вариант 2: Активно предлагать и рекламировать проект потенциальным вендорам
Плюсы:
· Скорость и целенаправленность: Вы сразу идете к целевой аудитории, которая может извлечь из проекта максимальную пользу.
· Прямая обратная связь: Вы узнаете от самих вендоров, насколько проект решает их реальные боли, что нужно доработать, какие у них требования.
· Высокая вероятность сделки: Если вы попадете в цель (решите их проблему), они будут заинтересованы во внедрении, поддержке или даже спонсорстве.
· Конкретный результат: Даже если вендор не «купит» проект, вы можете получить ценные контакты, партнерство или кейс для портфолио.
Минусы и риски:
· Нужна отточенная презентация: «Активно предлагать» ≠ «спамить». Нужно готовить персонализированные, технически грамотные предложения.
· Потребуются ресурсы: Нужно время на исследование вендоров, поиск контактов (лучше через LinkedIn или конференции, а не холодные письма на общую почту).
· Риск показаться навязчивым: Неправильный подход может испортить первую впечатление о проекте.
Вывод: Какой вариант эффективнее?
Гибридный подход, где Вариант 2 является двигателем, а Вариант 1 — фундаментом.
Вот пошаговая стратегия, которая объединяет сильные стороны обоих методов:
1. Создайте «минимально жизнеспособный пакет» для демонстрации:
· Четкая документация (что решает, как установить, примеры использования).
· Яркий README.md на GitHub с сравнением «было/стало».
· Небольшая статья или пост.
2. Начните с точечных, адресных предложений (Вариант 2 в умной форме):
· Цель: Не «продать», а получить экспертный отзыв.
· Кому писать: Не CEO, а инженерам, тимлидам, архитекторам, которые работают над внутренними инструментами или тестированием в целевых вендорских компаниях (Percona, Yandex, PostgresPro, 2ndQuadrant (часть EDB), AWS, Google Cloud и т.д.). Ищите их на LinkedIn или в телеграм-чатах, посвященных PostgreSQL.
Наиболее эффективный путь: Целенаправленно и уважительно выходить на инженеров из компаний-вендоров, используя подход «запросить экспертизу». Параллельно публично документировать этот путь, укрепляя личный бренд как практика, который создает полезные инструменты в диалоге с сообществом и индустрией.
какой вариант более эффективен - развивать собственный личный бренд pg_expecto и надеяться , что потенциальный вендор заметит(а тема интересна и потенциальна для развития только вендорам) или активно предлагать и рекламировать потенциальным вендорам идею и проект ?
Ответ нейросети:
Отличный и очень практичный вопрос. Оба подхода имеют право на жизнь, но в вашем случае (нишевый проект, интересный в первую очередь вендорам) эффективность будет разной.
Вариант 1: Развивать личный бренд и ждать, пока вендор заметит
Плюсы:
· Долгосрочный актив: Сильный личный бренд в области PostgreSQL принесет дивиденды далеко за пределами одного проекта (консультации, доклады, карьерный рост).
· Естественный отбор: Вендор, который найдет вас сам, будет более мотивирован. Это сигнал истинного интереса.
· Рост авторитета: Постепенно вы станете экспертом, и ваше мнение (и ваш проект) будут больше ценить.
· Создание сообщества: Вокруг бренда могут собраться единомышленники, которые помогут развивать проект.
Минусы и риски:
· Очень долгий срок окупаемости: На построение бренда, который заметят нужные люди в крупных компаниях, могут уйти годы.
· Риск «незаметности»: Мир PostgreSQL огромен. Проект pg_expecto, даже будучи отличным, может затеряться в шуме. Вендоры следят за трендами, но не за всем подряд.
· Упущенное время: Пока вы ждете, кто-то другой может создать аналогичный инструмент и начать активно его продвигать.
Вариант 2: Активно предлагать и рекламировать проект потенциальным вендорам
Плюсы:
· Скорость и целенаправленность: Вы сразу идете к целевой аудитории, которая может извлечь из проекта максимальную пользу.
· Прямая обратная связь: Вы узнаете от самих вендоров, насколько проект решает их реальные боли, что нужно доработать, какие у них требования.
· Высокая вероятность сделки: Если вы попадете в цель (решите их проблему), они будут заинтересованы во внедрении, поддержке или даже спонсорстве.
· Конкретный результат: Даже если вендор не «купит» проект, вы можете получить ценные контакты, партнерство или кейс для портфолио.
Минусы и риски:
· Нужна отточенная презентация: «Активно предлагать» ≠ «спамить». Нужно готовить персонализированные, технически грамотные предложения.
· Потребуются ресурсы: Нужно время на исследование вендоров, поиск контактов (лучше через LinkedIn или конференции, а не холодные письма на общую почту).
· Риск показаться навязчивым: Неправильный подход может испортить первую впечатление о проекте.
Вывод: Какой вариант эффективнее?
Гибридный подход, где Вариант 2 является двигателем, а Вариант 1 — фундаментом.
Вот пошаговая стратегия, которая объединяет сильные стороны обоих методов:
1. Создайте «минимально жизнеспособный пакет» для демонстрации:
· Четкая документация (что решает, как установить, примеры использования).
· Яркий README.md на GitHub с сравнением «было/стало».
· Небольшая статья или пост.
2. Начните с точечных, адресных предложений (Вариант 2 в умной форме):
· Цель: Не «продать», а получить экспертный отзыв.
· Кому писать: Не CEO, а инженерам, тимлидам, архитекторам, которые работают над внутренними инструментами или тестированием в целевых вендорских компаниях (Percona, Yandex, PostgresPro, 2ndQuadrant (часть EDB), AWS, Google Cloud и т.д.). Ищите их на LinkedIn или в телеграм-чатах, посвященных PostgreSQL.
Наиболее эффективный путь: Целенаправленно и уважительно выходить на инженеров из компаний-вендоров, используя подход «запросить экспертизу». Параллельно публично документировать этот путь, укрепляя личный бренд как практика, который создает полезные инструменты в диалоге с сообществом и индустрией.
Отслеживание метрик и анализ отдельных инцидентов часто не дают полной картины работы СУБД. Интеграция двух мощных инструментов — pgpro_pwr, собирающего детальную статистику, и pg_expecto, анализирующего события ожидания, — создает качественно новый уровень контроля. Этот симбиоз превращает разрозненные данные в последовательные и понятные сценарии для проактивного управления, глубокой диагностики и интеллектуальной оптимизации PostgreSQL.
https://dzen.ru/a/aWDLmSgG2XcyJxt3
https://dzen.ru/a/aWDLmSgG2XcyJxt3
В эпоху, когда скорость и стабильность баз данных напрямую влияют на успех бизнеса, необходим инструмент, который предоставляет полную прозрачность и контроль. pg_expecto 5.0 — это комплексное open-source решение, созданное для глубокой диагностики и оптимизации PostgreSQL. Оно объединяет продвинутый статистический анализ, проактивный мониторинг и встроенное нагрузочное тестирование в единый фреймворк. Уникальность инструмента — в корреляции внутренней статистики СУБД с метриками операционной системы и возможностях интеграции с ИИ для интеллектуальной аналитики. Это делает pg_expecto не просто утилитой, а полноценной методологией для администраторов, разработчиков и инженеров, стремящихся к максимальной производительности своих систем.
https://dzen.ru/a/aWIZ0iyZBGwoA4py
https://dzen.ru/a/aWIZ0iyZBGwoA4py
Часто задаваемые вопросы (FAQ) по проекту pg_expecto
1️⃣Общая информация
Что такое pg_expecto?
Это открытый комплекс для глубокого статистического анализа, нагрузочного тестирования и построения отчетов для PostgreSQL. Его цель — заменить интуитивную настройку на воспроизводимый, data-driven эксперимент.
В чем основная философия проекта?
pg_expecto — это не просто инструмент, а целостная методология. Он превращает анализ производительности из хаотичного поиска в структурированный процесс: Гипотеза → Эксперимент → Сбор данных → Анализ → Вывод.
На какой стадии развития находится проект?
Проект находится на ранней стадии активного развития. Об этом говорит небольшое, но заинтересованное сообщество (например, 14 звёзд на GitHub) и регулярная публикация новых статей и исследований.
2️⃣Технические особенности и применение
Какую проблему решает pg_expecto, чего не хватает pg_stat_statements?
pg_stat_statements показывает статистику, но не объясняет причин проблем. pg_expecto проводит корреляционный анализ, связывая события ожидания внутри СУБД (wait events) с метриками операционной системы (CPU, I/O из vmstat/iostat). Это позволяет найти корень проблемы: диск, память, блокировки или неоптимальный запрос.
Можно ли с помощью pg_expecto находить проблемные запросы?
Да, это одна из ключевых задач. Методология позволяет быстро определить SQL-запросы (queryid), вносящие наибольший вклад в деградацию производительности во время инцидента.
Что такое «проактивный мониторинг» в pg_expecto?
Система использует регрессионный анализ для вычисления трендов скорости работы и времени ожиданий. Она может создать инцидент «Деградация производительности» до того, как проблема станет критической, предупреждая администраторов о негативной тенденции.
Как проект использует нейросети (ИИ)?
pg_expecto может использовать LLM (например, DeepSeek) для семантического анализа предварительно собранных данных: для кластеризации и описания проблем или выявления паттернов в SQL-коде. Важное уточнение от автора: Нейросеть — это помощник для обработки информации, а не источник экспертизы. Её рекомендации всегда должны проверяться данными экспериментов, так как LLM могут давать убедительные, но ошибочные или противоречивые советы.
3️⃣Установка, развитие и сообщество
Где найти код и документацию?
· Исходный код и основная документация: репозиторий на GitHub.
· Дополнительные материалы: канал на Дзене.
Каковы планы по развитию?
Основные усилия направлены на:
1. Улучшение пользовательского опыта: упрощение установки и добавление понятных руководств.
2. Расширение аудитории: перевод документации на английский язык и участие в конференциях.
3. Накопление кейсов: главная задача — собрать больше реальных примеров использования от сообщества.
Что дает проект сообществу PostgreSQL?
Он предлагает новый подход к performance-инжинирингу, опровергая устаревшие догмы (например, правило «25% RAM для shared_buffers») через контролируемые эксперименты. Это шаг от «шаманства» к инженерной практике.
Как я могу помочь или принять участие?
· Протестируйте инструмент на своих задачах и поделитесь отзывом.🙏
· Расскажите о проекте в профессиональных кругах.
· Предложите улучшения для документации или кода через GitHub.
1️⃣Общая информация
Что такое pg_expecto?
Это открытый комплекс для глубокого статистического анализа, нагрузочного тестирования и построения отчетов для PostgreSQL. Его цель — заменить интуитивную настройку на воспроизводимый, data-driven эксперимент.
В чем основная философия проекта?
pg_expecto — это не просто инструмент, а целостная методология. Он превращает анализ производительности из хаотичного поиска в структурированный процесс: Гипотеза → Эксперимент → Сбор данных → Анализ → Вывод.
На какой стадии развития находится проект?
Проект находится на ранней стадии активного развития. Об этом говорит небольшое, но заинтересованное сообщество (например, 14 звёзд на GitHub) и регулярная публикация новых статей и исследований.
2️⃣Технические особенности и применение
Какую проблему решает pg_expecto, чего не хватает pg_stat_statements?
pg_stat_statements показывает статистику, но не объясняет причин проблем. pg_expecto проводит корреляционный анализ, связывая события ожидания внутри СУБД (wait events) с метриками операционной системы (CPU, I/O из vmstat/iostat). Это позволяет найти корень проблемы: диск, память, блокировки или неоптимальный запрос.
Можно ли с помощью pg_expecto находить проблемные запросы?
Да, это одна из ключевых задач. Методология позволяет быстро определить SQL-запросы (queryid), вносящие наибольший вклад в деградацию производительности во время инцидента.
Что такое «проактивный мониторинг» в pg_expecto?
Система использует регрессионный анализ для вычисления трендов скорости работы и времени ожиданий. Она может создать инцидент «Деградация производительности» до того, как проблема станет критической, предупреждая администраторов о негативной тенденции.
Как проект использует нейросети (ИИ)?
pg_expecto может использовать LLM (например, DeepSeek) для семантического анализа предварительно собранных данных: для кластеризации и описания проблем или выявления паттернов в SQL-коде. Важное уточнение от автора: Нейросеть — это помощник для обработки информации, а не источник экспертизы. Её рекомендации всегда должны проверяться данными экспериментов, так как LLM могут давать убедительные, но ошибочные или противоречивые советы.
3️⃣Установка, развитие и сообщество
Где найти код и документацию?
· Исходный код и основная документация: репозиторий на GitHub.
· Дополнительные материалы: канал на Дзене.
Каковы планы по развитию?
Основные усилия направлены на:
1. Улучшение пользовательского опыта: упрощение установки и добавление понятных руководств.
2. Расширение аудитории: перевод документации на английский язык и участие в конференциях.
3. Накопление кейсов: главная задача — собрать больше реальных примеров использования от сообщества.
Что дает проект сообществу PostgreSQL?
Он предлагает новый подход к performance-инжинирингу, опровергая устаревшие догмы (например, правило «25% RAM для shared_buffers») через контролируемые эксперименты. Это шаг от «шаманства» к инженерной практике.
Как я могу помочь или принять участие?
· Протестируйте инструмент на своих задачах и поделитесь отзывом.🙏
· Расскажите о проекте в профессиональных кругах.
· Предложите улучшения для документации или кода через GitHub.
GitHub
GitHub - pg-expecto/pg_expecto: Комплекс pg_expecto для статистического анализа производительности и нагрузочного тестирования…
Комплекс pg_expecto для статистического анализа производительности и нагрузочного тестирования СУБД PostgreSQL - pg-expecto/pg_expecto
PG_EXPECTO pinned «Часто задаваемые вопросы (FAQ) по проекту pg_expecto 1️⃣Общая информация Что такое pg_expecto? Это открытый комплекс для глубокого статистического анализа, нагрузочного тестирования и построения отчетов для PostgreSQL. Его цель — заменить интуитивную настройку…»
Новый этап исследований: поиск оптимальных параметров управления памятью Linux для PostgreSQL
Завершился важный цикл экспериментов по влиянию параметров подсистемы ввода-вывода на производительность PostgreSQL. Ключевую роль в объективной оценке сыграл комплекс pg_expecto, который позволил не просто собрать сырые метрики, а провести их системный статистический анализ, выявить корреляции и значимость каждого параметра. На основании этих данных были сформулированы четкие рекомендации по анализу параметров инфраструктуры для оптимизации подсистемы ввода/вывода.
Теперь переходим к следующему, не менее важному фронту работ — исследование методики расчета и настройки параметров управления памятью в Linux (таких как vm.swappiness, vm.dirty_ratio, vm.overcommit_memory и других).
Цель — определить оптимальные значения этих параметров для различных рабочих нагрузок СУБД, чтобы минимизировать накладные расходы на управление памятью и максимально эффективно использовать ресурсы сервера.
Завершился важный цикл экспериментов по влиянию параметров подсистемы ввода-вывода на производительность PostgreSQL. Ключевую роль в объективной оценке сыграл комплекс pg_expecto, который позволил не просто собрать сырые метрики, а провести их системный статистический анализ, выявить корреляции и значимость каждого параметра. На основании этих данных были сформулированы четкие рекомендации по анализу параметров инфраструктуры для оптимизации подсистемы ввода/вывода.
Теперь переходим к следующему, не менее важному фронту работ — исследование методики расчета и настройки параметров управления памятью в Linux (таких как vm.swappiness, vm.dirty_ratio, vm.overcommit_memory и других).
Цель — определить оптимальные значения этих параметров для различных рабочих нагрузок СУБД, чтобы минимизировать накладные расходы на управление памятью и максимально эффективно использовать ресурсы сервера.
Итог новогодних выходных ❄️☃️
https://dzen.ru/a/aWXgiV73hWNCxIgW
https://dzen.ru/a/aWXgiV73hWNCxIgW
Дзен | Статьи
Использование PG_EXPECTO для тонкой настройки IO Linux и повышения производительности PostgreSQL
Статья автора «Postgres DBA» в Дзене ✍: Производительность подсистемы ввода-вывода (IO) — критический фактор для любых высоконагруженных приложений, особенно для СУБД.
Настройка параметров памяти и ядра — критически важный этап развёртывания PostgreSQL в продуктивной среде. Неправильные значения могут привести не только к снижению производительности, но и к невозможности запуска СУБД или аварийным завершениям под нагрузкой. В этом материале систематизированы параметры от критически важных до оптимизационных, а также приведена методика расчёта ключевых настроек PostgreSQL.
https://dzen.ru/a/aWZX74G7oXzZiMIz
https://dzen.ru/a/aWZX74G7oXzZiMIz
📝План работ и экспериментов:
1️⃣Изменить сценарий INSERT : отказаться от массовой вставки, 1 транзакция = 1 insert.
2️⃣Продолжение экспериментов о влиянии изменений инфраструктуры на обработку кеша СУБД (shared_buffers).
1️⃣Изменить сценарий INSERT : отказаться от массовой вставки, 1 транзакция = 1 insert.
2️⃣Продолжение экспериментов о влиянии изменений инфраструктуры на обработку кеша СУБД (shared_buffers).
Нейросети стремительно входят в повседневную практику разработчиков и администраторов баз данных, обещая революцию в оптимизации и автоматизации. Но насколько можно доверять их рекомендациям в сложных, высоконагруженных системах? На основе актуальных экспериментов 2025-2026 годов мы разбираем, как ИИ меняет работу с PostgreSQL, где он действительно полезен, а где его «категоричные» советы приводят к падению производительности на сотни процентов. Это не статья о страхах, а руководство по эффективному и безопасному использованию нового инструментария.
https://dzen.ru/a/aWh4NtBUtEXvCn5n
https://dzen.ru/a/aWh4NtBUtEXvCn5n
Статья посвящена результатам комплексного анализа производительности системы после внесения изменений в тестовые сценарии и настройки окружения в версии 5.1. Основное внимание уделено выявлению узких мест под нагрузкой, в особенности — критическим проблемам ввода-вывода (I/O), которые стали определяющим фактором ограничения производительности СУБД.
https://dzen.ru/a/aWjJq9NfDEv1sYPy
https://dzen.ru/a/aWjJq9NfDEv1sYPy
Статья посвящена анализу производительности системы на основе PostgreSQL в условиях нагрузочного тестирования, для увеличенного значения shared_buffers = 4GB. Основное внимание уделено выявлению узких мест в подсистемах ввода-вывода (I/O) и памяти, а также их влиянию на общую производительность СУБД. Результаты анализа служат основой для формирования конкретных рекомендаций по оптимизации инфраструктуры и конфигурации базы данных.
https://dzen.ru/a/aWji0yeSdXr5h1o-
https://dzen.ru/a/aWji0yeSdXr5h1o-
От дисковых ожиданий к кэшированию: как shared_buffers меняет игру.
Данный отчёт суммирует результаты сравнительного нагрузочного тестирования СУБД PostgreSQL с использованием комплекса pg_expecto 5.1. Целью экспериментов была объективная оценка влияния ключевого параметра памяти — shared_buffers — на производительность базы данных и метрики инфраструктуры, в первую очередь подсистемы ввода-вывода. Тестирование имитировало смешанную OLAP-нагрузку с преобладанием операций чтения на идентичных конфигурациях, где единственной переменной был размер буферного кэша (1 ГБ в первом эксперименте и 4 ГБ во втором).
https://dzen.ru/a/aWjqAGX1SViFFtPp
Данный отчёт суммирует результаты сравнительного нагрузочного тестирования СУБД PostgreSQL с использованием комплекса pg_expecto 5.1. Целью экспериментов была объективная оценка влияния ключевого параметра памяти — shared_buffers — на производительность базы данных и метрики инфраструктуры, в первую очередь подсистемы ввода-вывода. Тестирование имитировало смешанную OLAP-нагрузку с преобладанием операций чтения на идентичных конфигурациях, где единственной переменной был размер буферного кэша (1 ГБ в первом эксперименте и 4 ГБ во втором).
https://dzen.ru/a/aWjqAGX1SViFFtPp
Настоящее исследование посвящено экспериментальной проверке общепринятой рекомендации по снижению параметра vm.swappiness для серверов PostgreSQL с "OLAP-нагрузкой". В ходе нагрузочного тестирования на синтетической рабочей нагрузке, имитирующей аналитические запросы, было оценено влияние значений vm.swappiness = 10 и vm.swappiness = 1 на производительность СУБД и инфраструктуры. Результаты выявили неожиданные закономерности, ставящие под сомнение универсальность данной рекомендации
https://dzen.ru/a/aWnOoP-X7waGvapc
https://dzen.ru/a/aWnOoP-X7waGvapc