Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

GopherCon Russia

April 23, 2021
Tweet

More Decks by GopherCon Russia

Other Decks in Programming

Transcript

  1. О чем? • Реальный кейс • Нюансы работы pgx и

    PgBouncer • Простой, легко применимый вывод
  2. LSR-1223: лёг item-storage. Куча 500-х ошибок. Из-за уменьшения кэша пошёл

    трафик в базу, из-за нагрузки база стала медленнее отвечать, из-за медленных ответов сервис стал килить коннекты к базе. Килл происходит через отдельные соединения, и из-за этого все коннекты в баунсере заполнились и новые перестали проходить. В item-storage обновили pgx на четвёртую версию, где нельзя отключить cancelContext.
  3. Почему не влияет на закрытый тест? “Планировщик” PgBouncer: • нет

    лимита активное использование соединения • под нагрузкой активное соединение все время загружено • шансы получить серверное соединение низкие ◦ когда параллельных запросов мало — это ок ◦ когда много — некоторые не успевают
  4. Размер пула в сервисе • <= пула на стороне БД

    Оговорочки: • медленные транзакции • разнесенная по времени нагрузка