у нас из-за таких больших запросов коннекты обрываются. в этом проблема. ресурсы не безграничны. иногда бывает так, что в нашу бд ходят другие сервисы, делают выборку, а в этом время и наши сервисы пытаются выбирать данные. из-за этого cpu в потолок, i/o тоже, и отваливаются коннекты к бд из-за этого. pgbouncer, конечно, тут тоже бессилен
Проблема в том как написан сервис на go, pgx (драйвер) сам использует курсоры. Похоже ваши разработчики выжирают данные в память сначала потом их плюют последовательно в кафку. Перепишите на каналы и складывайте каждую полученную строку в канал, а в другой рутине читайте и обрабатывайте. Есть такой шаблон в go pipeline. Это сильно разгрузит БД. Я делал интеграцию с oracle DB и переливал 40 млн записей в postgres сервисом на go. При вашем подходе потребление памяти на сервере го составляло около 10Гб, при пайплайне 300, почувствуйте разницу. Соответственно сервера БД тоже были загружены под самый потолок. Совет - переписывайте обработчик. БД в данном случае ведёт себя так как надо