Проверьте документацию к этой библиотеке, есть ли встроенный пул коннектов и как именно им нужно пользоваться.
нужно действительно использовать пул соединений. Плюс проверить конфигурацию пула на приложении, максимальное число соединений в пуле, конечно, не должно быть больше max_connections базы.
нужно либо выключить archive_mode либо указать archive_command в любую команду возвращающую true. /bin/true например. Включенный archive_mode при пустой archive_command это ошибка конфигурации, при которой база не будет удалять старые WAL вообще, предполагая что администратор исправит archive_command позже.
да, в pg_stat_activity walsender'ы тоже отображаются.
Planning Time - это время затраченное на работу планировщика, вся машинерия по генерации и выбора плана выполнения запроса, а не предполагаемое время работы запроса. Execution Time - выполнение запроса по выбранному плану. Время выполнения запроса это Planning Time + Execution Time + передача результата клиенту по сети (+ ещё пара неожиданных сюрпризов)
А кто сказал что сервис предназначен именно для землян?
ах, просто вероятностное допущение, тут обычно земляне пишут, а они известные шовинисты, не учитывают существование других обитателей вселенной.
Из-за латентности и дороговизны межпланетной связи, впрочем, партицировать пользователей скорей всего по-прежнему не очень разумно, скорей всего придёте к решению шардировать по региональному признаку. Как минимум одна копия сервиса на планету, а может даже и несколько в разных населённых регионах планеты.
password authentication failed for user точно говорит, что pg_hba выполняет парольную аутентификацию (plain text password, md5 или же scram). При неуспехе других методов аутентификации используются другие тексты ошибок.
Следовательно, проверяйте ваш пароль. Который вы задали для пользователя именно в базе, а не в системе.
pgbouncer не даст использовать другому клиенту соединение с базой с открытой транзакцией. Коннект с незакрытой транзакцией при отключении клиента будет закрыт баунсером (т.е. неявный rollback). "ERROR: current transaction is aborted" таким образом не получить. Смотреть нужно на первую из ошибок в этой транзакции, которая повлекла за собой переход в aborted состояние.
посмотрите в логе базы что было до того. Обычное сообщение об ошибке за попытку что-то делать в транзакции, ранее поймавшей ошибку. Вот с этой более ранней ошибкой разбираться и необходимо.
изучить LARTC и настроить соответствующим образом. Linux kernel, iproute2 да conntrack на firewall, ничего экзотического там нет. Материалов по multihoming и LARTC в сети навалом, я специально указал как такая конфигурация называется.
если ваша версия субд позволяет, то должно помочь