соединения postgres превышающие max_connections? - PullRequest
1 голос
/ 03 сентября 2010

у нас очень мощная база данных postgres с высокой вставкой (до того момента, что мы должны были выполнить пул соединений, но сейчас нет времени)

при устранении неполадок я использовал netstat, чтобы показать мне, сколько было соединений с postgres. я бы обычно видел больше, чем я указал в файле postgres.conf (через max_connections).

я бы увидел 1400-1600 соединений через netstat, хотя у меня max_connections установлено в 1000.

Кто-нибудь знает, что происходит? как именно это может произойти?

было бы замечательно понять это.

Ответы [ 2 ]

2 голосов
/ 03 сентября 2010

Возможно ли, что эти соединения уже были закрыты? Например, Windows не сразу закрывает соединение, но меняет его состояние на «TIME_WAITING.

Таким образом, соединения отображаются в netsat, но фактически закрыты.

Только те, которые отображаются как «ESTABLISHED», являются «живыми» соединениями.

Кстати: вы можете просто разместить пул соединений перед вашим сервером PostgreSQL, не меняя приложение. pgPool (или pgBouncer) сделает вид, что они являются настоящим сервером PostgreSQL для приложения, и сделает пул "за его спиной"

0 голосов
/ 03 сентября 2010

Использовать пул соединений.Более 1000 подключений значительно замедляют работу базы данных, и даже для 1000 подключений вам понадобится некоторое $$$$$ оборудование с большим количеством ядер и оперативной памяти.Использование пула соединений намного эффективнее.

...