Как стать автором
Обновить

Cloudflare открыла код форка PgBouncer

Время прочтения 1 мин
Просмотры 2.8K
Open source *PostgreSQL *Программирование *Совершенный код *SQL *

Компания Cloudflare разместила исходный код прокси-сервера PgBouncer, который используется для поддержания пула открытых соединений к СУБД PostgreSQL. 

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 2

Горизонтальное масштабирование PostgreSQL с помощью PL/Proxy.

Время прочтения 9 мин
Просмотры 26K
PostgreSQL *
Очень тяжело начать писать статью. Т.е очень тяжело придумать вступительное слово. Хочется рассказать обо всём и сразу :) Но нет. Будем последовательны.
Начну с того что совсем недавно проходил Highload++ 2008 на котором мне удалось побывать.
Скажу сразу — мероприятие было проведено по высшему клаcсу, докладов было много и все были очень интересными.
Одной из самых запомнившихся презентаций была лекция Аско Ойя об инфраструктуре серверов баз данных в Skype. Лекция в большей степени касалась различных средств с помощью которых достигается такая производительность серверов.
По словам Аско, база данных Skype выдержит даже если все жители Земли захотят подключится к скайп в один момент.

Приехав домой очень захотелось это всё попробовать в живую. О чём я сейчас и расскажу. Сразу оговорюсь — структура базы данных для теста, взята из примера на сайте самих разработчиков и естественно не имеет ничего общего с реальной загрузкой.
В статье будет описано что распределением нагрузки надо заниматься после того как уже припекло и база падает, но это не совсем так. С помощью данной статьи я как раз хочу подготовить начинающих и не опытных разработчиков и заодно заставить их задуматься о том, что предусматривать возможность распределения нагрузки между серверами надо ещё при проектировании системы. И это не будет считаться той самой «преждевременной оптимизацией» о которой так много пишут и которой так боятся.

UPD: Как правильно заметил хабраюзер descentspb в статье присутствует досаднейшая ошибка. В следствие своей невнимательности я подумал что PgBouncer надо устанавливать между прокси и клиентом. Но, как оказалось, та проблема которую я решал с помощью PgBouncer не решится если установить его именно так. Правильнее надо устанавливать боунсер между нодами и прокси. Мало того, именно так и рекомендуется делать в оффициальном мануале на сайте PL/Proxy.
В любом случае использование PgBouncer так как указано на моей схеме также даст прирост производительности. (Разгрузит Proxy).


Читать дальше →
Всего голосов 52: ↑49 и ↓3 +46
Комментарии 46

Как вынудить процесс использовать новый адрес DNS-сервера из обновлённого resolv.conf без перезапуска самого процесса

Время прочтения 4 мин
Просмотры 12K
Системное программирование *
Я работаю системным администратором Unix. Однажды к нам в отдел эксплуатации сервисов упал тикет от программиста с выдержой из лога application-сервера в заголовке: "pgbouncer cannot connect to server". Посмотрев логи pgbouncer'ов, я увидел, что периодически возникают lookup fail'ы при обращении к нашим DNS. Было установленно, что это связано не с работой наших DNS-серверов, а с ненадёжностью самого протокола UDP: иногда возникают потери пакетов по разным причинам.
image
В результате, было решено установить на каждом сервере с pgbouncer'ами по кэширующему BIND. И тут возникла интересная проблема: pgbouncer не перечитывал по сигналу HUP файл /etc/resolv.conf и продолжал обращаться к старым DNS-серверам. А перезагружать баунсеры категорически нельзя: есть проблемные проекты, которые очень болезненно относятся к разрывом сессий с базой.

В данной статье я расскажу как можно pgbouncer или любую другую программу, использующую библиотечный вызов getaddrinfo(), заставить перечитать resolv.conf и начать использовать новый DNS-сервер совершенно безболезненно для клиентов (без даунтайма).
Читать дальше →
Всего голосов 38: ↑36 и ↓2 +34
Комментарии 18

Кластер высокой доступности на postgresql 9.6 + repmgr + pgbouncer + haproxy + keepalived + контроль через telegram

Время прочтения 32 мин
Просмотры 51K
Блог компании ESOFT *nix *Серверное администрирование *Администрирование баз данных *Хранение данных *
Туториал
Recovery mode
image

На сегодняшний день процедура реализации «failover» в Postgresql является одной из самых простых и интуитивно понятных. Для ее реализации необходимо определиться со сценариями файловера — это залог успешной работы кластера, протестировать его работу. В двух словах — настраивается репликация, чаще всего асинхронная, и в случае отказа текущего мастера, другая нода(standby) становится текущем «мастером», другие ноды standby начинают следовать за новым мастером.

На сегодняшний день repmgr поддерживает сценарий автоматического Failover — autofailover, что позволяет поддерживать кластер в рабочем состоянии после выхода из строя ноды-мастера без мгновенного вмешательства сотрудника, что немаловажно, так как не происходит большого падения UPTIME. Для уведомлений используем telegram.

Появилась необходимость в связи с развитием внутренних сервисов реализовать систему хранения БД на Postgresql + репликация + балансировка + failover(отказоустойчивость). Как всегда в интернете вроде бы что то и есть, но всё оно устаревшее или на практике не реализуемое в том виде, в котором оно представлено. Было решено представить данное решение, чтобы в будущем у специалистов, решивших реализовать подобную схему было представление как это делается, и чтобы новичкам было легко это реализовать следуя данной инструкции. Постарались описать все как можно подробней, вникнуть во все нюансы и особенности.
Читать дальше →
Всего голосов 43: ↑41 и ↓2 +39
Комментарии 45

Версионирование и деплой кода PostgreSQL

Время прочтения 6 мин
Просмотры 17K
Блог компании AvitoTech Высокая производительность *PHP *PostgreSQL *Программирование *
Сотни баз данных и тысячи хранимых процедур. Как это всё писать, тестировать и деплоить на множество серверов с возможностью быстрого отката в условиях хайлоад 24х7 и не умереть? Интересно? Добро пожаловать под кат!

image
Читать дальше →
Всего голосов 40: ↑39 и ↓1 +38
Комментарии 35

USE, RED, PgBouncer, его настройки и мониторинг

Время прочтения 13 мин
Просмотры 18K
Блог компании okmeter.io PostgreSQL *Серверная оптимизация *Серверное администрирование *Администрирование баз данных *
Pgbouncer USE RED

Мы начали обновлять в нашем сервисе мониторинг для PgBouncer и решили все немного причесать. Чтобы сделать всё годно, мы притянули самые известные методологии перформанс мониторинга: USE (Utilization, Saturation, Errors) Брендана Грегга и RED (Requests, Errors, Durations) от Тома Уилки.


Под катом рассказ с графиками про то, как устроен pgbouncer, какие у него есть конфигурационные ручки и как используя USE/RED выбрать правильные метрики для его мониторинга.

Читать дальше →
Всего голосов 33: ↑33 и ↓0 +33
Комментарии 0

Odyssey: архитектура, настройка, мониторинг. Андрей Бородин (2020)

Время прочтения 20 мин
Просмотры 8.9K
Системное администрирование *PostgreSQL *SQL *Серверное администрирование *Администрирование баз данных *

Предлагаю ознакомиться с расшифровкой доклада начала 2020 года Андрея Бородина "Odyssey: архитектура, настройка, мониторинг"


Совсем недавно мы выпустили версию 1.0 нашего пулера соединений Odyssey. Он призван решить проблемы управления соединениям высоконагруженных инсталляций PostgreSQL. В этом докладе я хотел бы рассказать об архитектуре и эксплуатации Одиссея. Также будут затронуты проблемы, которые были решены в достаточно длинном переходе между 1.0rc и 1.0.


Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 1

Приключения одного бага или как починить pgx чужими руками

Время прочтения 9 мин
Просмотры 7K
Блог компании AvitoTech Высокая производительность *PostgreSQL *Программирование *Go *

Привет, меня зовут Иван, и я делаю Авито Доставку.


Тестирую я как-то раз один из наших сервисов на быстродействие. И в метриках pgbouncer’a вижу вот такую печальную картину:


метрики pgbouncer'а
Зелёный — число активных клиентских соединений (cl_active), красные точки — число клиентских соединений, которым не досталось серверного соединения (cl_waiting, правая шкала)


Расследуя этот график, удалось выйти на занятный баг, снять блокер по переезду на четвёртую версию pgx, а также немного разобраться в устройстве pgx и pgbouncer’a.

Читать дальше →
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 14

Odyssey roadmap: что ещё мы хотим от пулера соединений. Андрей Бородин (2019)

Время прочтения 15 мин
Просмотры 2.9K
Системное администрирование *PostgreSQL *SQL *Серверное администрирование *Администрирование баз данных *


В докладе Андрей Бородин расскажет, как они учли опыт масштабирования PgBouncer при проектировании пулера соединений Odyssey, как выкатывали его в production. Кроме того, обсудим какие функции пулера хотелось бы видеть в новых версиях: нам важно не только закрывать свои потребности, но развивать сообщество пользователей Одиссея.

Всего голосов 18: ↑17 и ↓1 +16
Комментарии 9

Что и зачем мы делаем в Open Source базах данных. Андрей Бородин (Яндекс.Облако)

Время прочтения 19 мин
Просмотры 3.7K
Системное администрирование *PostgreSQL *SQL *Серверное администрирование *Администрирование баз данных *


Будет рассмотрен вклад Яндекса в следующие базы данных.


  • ClickHouse
  • Odyssey
  • Восстановление на точку во времени (WAL-G)
  • PostgreSQL (включая logerrors, Amcheck, heapcheck)
  • Greenplum
Всего голосов 17: ↑15 и ↓2 +13
Комментарии 0

Оптимизация работы с PostgreSQL в Go: от 50 до 5000 RPS

Время прочтения 14 мин
Просмотры 22K
Блог компании AvitoTech Высокая производительность *PostgreSQL *Программирование *Go *

Привет, меня зовут Иван, и я делаю Авито Доставку. Когда пользователь покупает товар с доставкой, мы показываем ему список отделений служб доставки с ценами. Цена доставки может меняться от отделения к отделению. Мы смотрим на область карты, где покупатель ищет товар и информацию по объявлению, например, координаты продавца, вес и размеры товара. И на выходе показываем человеку список отделений с адресами и ценой доставки в каждое из них.


В ходе разработки калькулятора цены доставки возникла такая задача: есть структура базы данных PostgreSQL и запрос к ней от сервиса на Go. Нужно заставить всё это работать достаточно быстро. В итоге нам удалось поднять пропускную способность сервиса с 50 до 5000 RPS и выявить пару нюансов при общении сервиса с базой. Об этом и пойдёт рассказ.


Читать дальше →
Всего голосов 52: ↑47 и ↓5 +42
Комментарии 44

Энтерпрайз-домино. 0x13 вредных советов для ниндзя-разработчика

Время прочтения 6 мин
Просмотры 7.9K
Блог компании Тензор Высокая производительность *PostgreSQL *Программирование *Анализ и проектирование систем *

Практически любая enterprise-система (под которой мы будем подразумевать некоторое ПО, где пользователи работают постоянно в течение всего рабочего дня) в современном мире стремится вырасти вместе с управляемым ей бизнесом в высоконагруженное web-решение вроде нашего СБИС.

Оно и понятно: доступность с любого устройства, где есть браузер, минимальные вложения "на старте" - все, что бизнес так любит. Но с развитием системы растет не только ее размер, но и сложность архитектуры решения, а с ней - и цена любой ошибки, вызывающей сразу каскад возможных проблем и "эффект домино".

Когда, где и как их может вызвать затаившийся до поры диверсант?

Читать далее
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 5

Grafana дашборды для pgSCV

Время прочтения 4 мин
Просмотры 6.5K
Системное администрирование *PostgreSQL *Администрирование баз данных *

Неделю назад я делал анонс про pgSCV новом экспортере метрик для PostgreSQL. После анонса мне ожидаемо стали писать читатели с намеком что неплохо бы и дашборды сделать. Эта задача есть у меня в списке и этот запрос не оказался для меня сюрпризом. Оно и понятно, метрик ого-го сколько и даже продвинутому DBA понадобится довольно много времени чтобы разобраться в них и соорудить более-менее вменяемый дашборд.

Я занялся вопросом и сделал базовые дашборды которые покрывают некий (но не весь) объем метрик которые есть в pgSCV. А в этом посте я сделаю быстрый обзор и расскажу что там есть.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 5