стратегией наращивания коннектов к БД?
через коннекшн стринг Connection Lifetime=0;Min Pool Size=0;Max Pool Size=100;Pooling=true;
это делает не ЕФ (не его работа), а ДБ драйвер (ADO.Net)
Видел эти настройки, это немного не то... Мы используем Pooling + Max Pool Size + SQL Request timeout. Проблема в следующем: если на приложение резко приходит 300rps - одномоментно открывается 300 коннектов к БД. Естественно БД от этого плохеет и приложение какое-то время пятисотит, но через какое-то время количество коннектов к БД уменьшается до 100 при этом QPS к базе остаётся на примерно том-же уровне в 300qps. В связи с этим и возник вопрос: существует-ли способ управления стратегией наращивания коннектов? Как пример: при поступлении n rps открыть n/2 коннектов и подождать 30с. Если qps не устраивает - сделать Ncurr + 10
более тонкого управления адо.нетом я не знаю Непонятно почему вы поставили max=300 если БД от этого плохеет Почему бы не поставить max=100 и min=50 чтобы спайк был не такой жоский?
Дело в том что БД держит эти 300 коннектов при условии что кеш прогрелся
кеш внешний? это тогда не БД держит
Я про кеш БД
Если база - постгрес то можно попробовать прикрутить пгбаунсер в качестве прослойки и поставить min_pool_size для того чтоб соединения прогретыми держались
База Postgres-like - CockroachDB. Но в кач-ве балансера - Haproxy и перейти на баунсер пока не получится...
Обсуждают сегодня