конекшен пула.
Насколько вам критично, чтобы лейтенси при обращении к базе был стабильным?
Предположем, раундтрип до базы 0.5ms, запросы в среднем по 15ms на стороне базы выполняются, но время от времени TCP соединения в connection pool устаревают, и при открытии соединения происходит не обычный reset, а полный цикл установки соединения, включая DNS lookup, это занимает от 0.8s до 1.5s.
Все это портит картину, особенно для сервисов, которые делают много rpc вызовов, и лейтенси по факту будет зависеть от самого медленного запроса. Это причина, по которой slo на лейтенси выставляют обычно по 95 персентилю, а не по avg.
Кароч я нашел способ умно вынести установление соединения за скобки с помощью воркеров, которые открывают за вас соединения, и когда приходит запрос он точняк получает уже открытое только что соединение.
Я хочу сделать генератор оберток над Adonet, чтобы для любого провайдера, можно было заменить
BrokkoliSqlConnection на BrokkoliwarmSqlConnection, который будет под капотом декорировать получение горячих соединений через пул.
А почему бы и нет? Если в пуле это количество скачет, почему не держать всегда? Ну можно сделать и какой-то мешин лернинг простенький. Мерять макс конкаренси за какой-то интервал, и держать как минимум такое количество.
У СУБД нету ограниченной на количество соединений?🤔
Обсуждают сегодня