Как автоматически завершать долгие запросы в PostgreSQL

Долгие запросы могут вызвать серьёзные проблемы с производительностью PostgreSQL. Рассказываем, как автоматизировать их завершение. Зачем убивать долгие запросы? На практике такие запросы могут: Блокировать таблицы и строки Съедать память и процессор Вызывать дедлоки Мешать миграциям или мониторингу Причины: Пропущенные WHERE-условия Сложные отчёты Подвисшие клиенты Как работает скрипт Мы используем Bash-скрипт для: Подключения к PostgreSQL Поиска запросов старше 60 секунд Автоматического завершения этих запросов Скрипт для завершения долгих запросов 1. Переменные подключения #!/bin/bash PG_CONN="postgres://user:pass@postgres-host/postgres-db" QUERY_TIMEOUT="60" PSQL_RUN="psql $PG_CONN -Atc" 2. SQL-запрос QUERY="SELECT pid FROM pg_stat_activity WHERE now() - query_start > '${QUERY_TIMEOUT} seconds'::interval" 3. Завершение echo "Ищем запросы дольше $QUERY_TIMEOUT секунд..." pids=$(${PSQL_RUN} "$QUERY") for pid in $pids; do echo "Завершаем PID $pid..." ${PSQL_RUN} "SELECT pg_terminate_backend($pid)" done Автоматизация через Cron Чтобы запускать каждые 5 минут: ...

сентября 5, 2025 · 1 минута · 178 слов · DevOps Insights

Управление ресурсами в Kubernetes: LimitRange и ResourceQuota

Управление ресурсами в Kubernetes: LimitRange и ResourceQuota Для обеспечения стабильности и справедливого распределения ресурсов в Kubernetes предусмотрены два инструмента: LimitRange и ResourceQuota. В этой статье мы рассмотрим, в чем их суть, чем они отличаются и как использовать на практике. Что такое LimitRange? LimitRange — это объект политики Kubernetes, задающий значения по умолчанию для лимитов и запросов ресурсов контейнеров. Зачем нужен? Чтобы избежать ситуаций, когда разработчики забывают указать лимиты, и под потребляет слишком много ресурсов. ...

сентября 5, 2025 · 2 минуты · 222 слова · John Cena

Как развернуть приватный Docker Registry

Нужен безопасный, быстрый и автономный способ хранения контейнерных образов? Развернуть собственный приватный Docker Registry проще, чем кажется. Зачем запускать собственный Docker Registry? Преимущества: Обход ограничений Docker Hub Безопасное хранение приватных образов Ускорение CI/CD процессов Контроль хранения и доступа к образам Особенно полезно для изолированных (air-gapped) и корпоративных сред. 1. Требования Понадобится: Установленный Docker Сервер или виртуальная машина Необязательно: домен и TLS-сертификаты (для продакшена) 2. Быстрый запуск локального Registry docker run -d -p 5000:5000 --name registry registry:2 Registry будет доступен на localhost:5000. ...

сентября 4, 2025 · 2 минуты · 364 слова · DevOps Insights

Лучшие практики деплоя приложений в Kubernetes

Деплойте приложения в Kubernetes правильно — без простоев, с масштабированием и надёжной конфигурацией. 1. Используйте Readiness и Liveness пробы Kubernetes отслеживает, готово ли ваше приложение принимать трафик. livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 5 periodSeconds: 10 readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 10 2. Настройте ресурсы Это помогает избежать перегрузки узлов или нехватки ресурсов: ...

сентября 3, 2025 · 1 минута · 178 слов · DevOps Insights

Распространённые ошибки Ingress в Kubernetes: руководство по устранению

Распространённые ошибки Ingress в Kubernetes Ingress — мощный инструмент для управления внешним доступом к сервисам в кластере. Но из-за сложности конфигурации он нередко вызывает затруднения. Ниже рассмотрим основные ошибки и способы их устранения. 1. Неправильные аннотации Аннотации управляют многими функциями, такими как переписывание URL, аутентификация и ограничение трафика. Ошибки в аннотациях могут сломать Ingress. Пример корректной аннотации: annotations: nginx.ingress.kubernetes.io/rewrite-target: /$1 2. Неправильный порт сервиса Порт, указанный в Ingress, должен совпадать с targetPort в Service. ...

сентября 3, 2025 · 1 минута · 172 слова · John Cena