Size: a a a

pgsql – PostgreSQL

2020 December 30

D

Dmitriy in pgsql – PostgreSQL
Michael マイケル Zhilin ジリン
так это ж забавно - закрывать неумение в одном месте инструментом в другом. И потом массово публично обсуждать отрицательные стороны инструмента в другом месте, аля pgbouncer плох по tps или pgbouncer плох по секьюрити, забывая о неумении в исходном месте. Извините, прошу без обид, но изобретать себе геморрой на будущее не обязательно.  java хорошо умеет делать connection pool-ы, и postgresql не сильно хуже oracle умеет поднимать новые коннекты при создании сессии.
Я думаю, что пгбоунсер часто юзают всё же потому, что далеко не везде интерпрайз, не везде джава, не везде один сервис ходит в одну БД... Где-то есть и пхп, который на своей стороне пул коннектов сделать не может - и там пгбоунсер очень даже нужен
источник

MZ

Michael マイケル Zhilin ... in pgsql – PostgreSQL
Dmitriy
Я думаю, что пгбоунсер часто юзают всё же потому, что далеко не везде интерпрайз, не везде джава, не везде один сервис ходит в одну БД... Где-то есть и пхп, который на своей стороне пул коннектов сделать не может - и там пгбоунсер очень даже нужен
Это бесспорно. Вопрос исходно был про java. Если кто-то не умеет управлять пулами коннектов, то нужен pgbouncer. То есть когда больше чем 10 коннектов в секунду - уже пора исправлять.
источник

D

Dmitriy in pgsql – PostgreSQL
Michael マイケル Zhilin ジリン
Это бесспорно. Вопрос исходно был про java. Если кто-то не умеет управлять пулами коннектов, то нужен pgbouncer. То есть когда больше чем 10 коннектов в секунду - уже пора исправлять.
А откуда, если не секрет, вы взяли число именно в 10 коннектов в секунду?)
источник

D

Dmitriy in pgsql – PostgreSQL
Я имею в виду это опытным путём?
источник

MZ

Michael マイケル Zhilin ... in pgsql – PostgreSQL
Dmitriy
Я имею в виду это опытным путём?
10 коннектов в секунду - это по 100мс на коннект. с учётом что коннект - это условно сложный запрос с экслюзивной блокировкой, то можно считать что его среднее время будет от 1 до 1000мс (к примеру на ARMv7 300MHz). Отсюда и логика.
источник
2020 December 31

am

a m in pgsql – PostgreSQL
Dmitriy
Я думаю, что пгбоунсер часто юзают всё же потому, что далеко не везде интерпрайз, не везде джава, не везде один сервис ходит в одну БД... Где-то есть и пхп, который на своей стороне пул коннектов сделать не может - и там пгбоунсер очень даже нужен
А в мире PHP все до сих пор работает через CGI? В смысле, без долгоживущего сервера. Я из деревни просто, интересно.
источник

D

Dmitriy in pgsql – PostgreSQL
Michael マイケル Zhilin ジリン
10 коннектов в секунду - это по 100мс на коннект. с учётом что коннект - это условно сложный запрос с экслюзивной блокировкой, то можно считать что его среднее время будет от 1 до 1000мс (к примеру на ARMv7 300MHz). Отсюда и логика.
Ясно. Ещё есть вопрос немного странный, однако у меня (да и у других разработчиков) он часто возникает. Если есть некое API, какое максимальное время выполнения SQL запроса является допустимым (если эндпоинт делает всего 1 запрос, конечно)? Как понять, что запрос надо бы оптимизировать? Я наткнулся где-то на рекомендацию гугла, что страница должна грузиться в пределах 200 мс. При этом я регулярно сталкиваюсь с ситуацией, что кеш не прогрет, а у меня SQL-запрос ну вообще никак не укладывается даже в 400 мс (с индексацией, денормализацией) - что делать? Как вообще в эти 200 мс уложиться, когда кеш не прогрет?
источник

D

Dmitriy in pgsql – PostgreSQL
a m
А в мире PHP все до сих пор работает через CGI? В смысле, без долгоживущего сервера. Я из деревни просто, интересно.
Через php-fpm он работает
источник

D

Dmitriy in pgsql – PostgreSQL
Но вообще если есть возможность писать не на php, я бы выбрал что-то асинхронное. Правда всё равно упрёшься в количество коннектов в пуле
источник

am

a m in pgsql – PostgreSQL
Dmitriy
Через php-fpm он работает
источник

am

a m in pgsql – PostgreSQL
Каждый год CGI по-новому называют.
источник

MZ

Michael マイケル Zhilin ... in pgsql – PostgreSQL
Dmitriy
Ясно. Ещё есть вопрос немного странный, однако у меня (да и у других разработчиков) он часто возникает. Если есть некое API, какое максимальное время выполнения SQL запроса является допустимым (если эндпоинт делает всего 1 запрос, конечно)? Как понять, что запрос надо бы оптимизировать? Я наткнулся где-то на рекомендацию гугла, что страница должна грузиться в пределах 200 мс. При этом я регулярно сталкиваюсь с ситуацией, что кеш не прогрет, а у меня SQL-запрос ну вообще никак не укладывается даже в 400 мс (с индексацией, денормализацией) - что делать? Как вообще в эти 200 мс уложиться, когда кеш не прогрет?
для этого есть квантили, 90%, 95%, 99%. К примеру KPI может быть - 95% укладываются в 200мс, а 100% укладывается в timeout (несколько секунд).
источник

D

Dmitriy in pgsql – PostgreSQL
Michael マイケル Zhilin ジリン
для этого есть квантили, 90%, 95%, 99%. К примеру KPI может быть - 95% укладываются в 200мс, а 100% укладывается в timeout (несколько секунд).
То есть считать процент запросов, которые укладываются в нужное время?
источник

am

a m in pgsql – PostgreSQL
Michael マイケル Zhilin ジリン
для этого есть квантили, 90%, 95%, 99%. К примеру KPI может быть - 95% укладываются в 200мс, а 100% укладывается в timeout (несколько секунд).
Я в квантилях не силен, но правильно ли я понимаю, что каждый двадцатый запрос пользователь получает красивую страницу с 5xx?
источник

D

Dmitriy in pgsql – PostgreSQL
Не пойму, как считать, если приложение масштабировано на несколько инстансов...
источник

MZ

Michael マイケル Zhilin ... in pgsql – PostgreSQL
Dmitriy
Не пойму, как считать, если приложение масштабировано на несколько инстансов...
так для этого есть prometheus + grafana и гистограммы. Prom/graf легко посчитаю через гистограммы нужные квантили.
источник

MZ

Michael マイケル Zhilin ... in pgsql – PostgreSQL
a m
Я в квантилях не силен, но правильно ли я понимаю, что каждый двадцатый запрос пользователь получает красивую страницу с 5xx?
нет, никто не должен получить ошибки. Надо уложиться для всех. а вот условно 99% должны ещё уложиться к ожидаемую циферку
источник

D

Dmitriy in pgsql – PostgreSQL
Michael マイケル Zhilin ジリン
так для этого есть prometheus + grafana и гистограммы. Prom/graf легко посчитаю через гистограммы нужные квантили.
Насчёт Графаны спасибо - она есть, надо будет в ней поглядеть
источник

MZ

Michael マイケル Zhilin ... in pgsql – PostgreSQL
Dmitriy
Насчёт Графаны спасибо - она есть, надо будет в ней поглядеть
главное гистограммы собирать с сервисов, а потом их агреггировать и считать квантиль уже в графане.
источник

MZ

Michael マイケル Zhilin ... in pgsql – PostgreSQL
графана - это просто лего. как соберёшь, так и будет
источник