Default: 20
+==== server_round_robin ====
+
+By default, pgbouncer reuses server connections in LIFO manner, so that few
+connections get the most load. This gives best performance if you have single
+server serving a database. But if there is TCP round-robin behind a database
+IP then it's better if pgbouncer also uses connections in that manner, thus
+achieving uniform load.
+
+Default: 0
+
=== Log settings ===
==== log_connections ====
extern usec_t cf_query_timeout;
extern usec_t cf_client_idle_timeout;
extern usec_t cf_client_login_timeout;
+extern int cf_server_round_robin;
extern int cf_auth_type;
extern char *cf_auth_file;
char *cf_server_reset_query = "";
char *cf_server_check_query = "select 1";
usec_t cf_server_check_delay = 30 * USEC;
+int cf_server_round_robin = 0;
usec_t cf_server_lifetime = 60*60*USEC;
usec_t cf_server_idle_timeout = 10*60*USEC;
{"server_idle_timeout", true, CF_TIME, &cf_server_idle_timeout},
{"server_connect_timeout",true, CF_TIME, &cf_server_connect_timeout},
{"server_login_retry", true, CF_TIME, &cf_server_login_retry},
+{"server_round_robin", true, CF_INT, &cf_server_round_robin},
{"pkt_buf", false, CF_INT, &cf_sbuf_len},
{"tcp_defer_accept", false, CF_INT, &cf_tcp_defer_accept},
statlist_append(&server->head, &pool->tested_server_list);
break;
case SV_IDLE:
- if (server->close_needed)
+ if (server->close_needed || cf_server_round_robin)
/* try to avoid immediate usage then */
statlist_append(&server->head, &pool->idle_server_list);
else