PgBouncer: query_wait_timeout

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

PgBouncer: query_wait_timeout

Crauss, Jacson
Pessoal, boa tarde!

Tenho um servidor com alguns databases que são acessados através do pgbouncer. O que está ocorrendo para alguns (somente para alguns) databases é que ao tentar conectar através do pgadmin, jenkins ou jboss, fica um tempo travada a ferramenta, como se estivesse tentando conectar, mas no log do pgbouncer não loga nada, nem a tentativa de conexão, e após algum tempo ocorre erro de timeout, e aí sim aparece no log do bouncer o erro...

No exemplo abaixo eu fiz a tentativa de conexão por volta das 13:46, e dois minutos depois (é o tempo default do query_wait_timeout pelo que eu li na documentação do bouncer) logou o erro abaixo:

2017-12-27 13:48:54.506 7406 LOG C-0x948218: dbteste/usrteste@10.70.2.186:45200 closing because: query_wait_timeout (age=120)
2017-12-27 13:48:54.506 7406 WARNING C-0x948218: dbteste/usrteste@10.70.2.186:45200 Pooler Error: query_wait_timeout

Alguém já passou por este problema?



_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Reply | Threaded
Open this post in threaded view
|

Re: PgBouncer: query_wait_timeout

Daniel Silva



De: "Crauss, Jacson" <[hidden email]>
Para: "Comunidade PostgreSQL Brasileira" <[hidden email]>
Enviadas: Quarta-feira, 27 de dezembro de 2017 14:18:08
Assunto: [pgbr-geral] PgBouncer: query_wait_timeout

Pessoal, boa tarde!

Tenho um servidor com alguns databases que são acessados através do pgbouncer. O que está ocorrendo para alguns (somente para alguns) databases é que ao tentar conectar através do pgadmin, jenkins ou jboss, fica um tempo travada a ferramenta, como se estivesse tentando conectar, mas no log do pgbouncer não loga nada, nem a tentativa de conexão, e após algum tempo ocorre erro de timeout, e aí sim aparece no log do bouncer o erro...

No exemplo abaixo eu fiz a tentativa de conexão por volta das 13:46, e dois minutos depois (é o tempo default do query_wait_timeout pelo que eu li na documentação do bouncer) logou o erro abaixo:

2017-12-27 13:48:54.506 7406 LOG C-0x948218: dbteste/usrteste@10.70.2.186:45200 closing because: query_wait_timeout (age=120)
2017-12-27 13:48:54.506 7406 WARNING C-0x948218: dbteste/usrteste@10.70.2.186:45200 Pooler Error: query_wait_timeout

Alguém já passou por este problema?



_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

--

Jacson,

esse tempo é sobre tempo máximo que poderá aguardar para conectar no banco de dados, ou seja, está aguardando conexão para conectar no postgres. Na prática essa configuração retém a tentativa de conexão no pool por esse tempo, e após liberado alguma conexão para conectar no Postgres.

O que pode estar acontecendo é que as conexões com banco de dados (max_connections no postgresql.conf), chegou no limite, e cada conexão nova fica na fila do pgbouncer para conectar durante esse tempo até uma conexão estar disponível novamente. Monitora a quantidade de conexões no banco de dados durante o período que não conseguir conexão e verifica se está acontecendo essa situação. É importante validar se não está ocorrendo bloqueios, porque poderá chegar ao limite de conexão rapidamente. O arquivo do log do Postgres poderá informa-lo sobre essas situações.

_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Reply | Threaded
Open this post in threaded view
|

Re: PgBouncer: query_wait_timeout

Flavio Henrique Araque Gurgel
In reply to this post by Crauss, Jacson


Em qua, 27 de dez de 2017 às 17:18, Crauss, Jacson <[hidden email]> escreveu:
Pessoal, boa tarde!

Tenho um servidor com alguns databases que são acessados através do pgbouncer. O que está ocorrendo para alguns (somente para alguns) databases é que ao tentar conectar através do pgadmin, jenkins ou jboss, fica um tempo travada a ferramenta, como se estivesse tentando conectar, mas no log do pgbouncer não loga nada, nem a tentativa de conexão, e após algum tempo ocorre erro de timeout, e aí sim aparece no log do bouncer o erro...

No exemplo abaixo eu fiz a tentativa de conexão por volta das 13:46, e dois minutos depois (é o tempo default do query_wait_timeout pelo que eu li na documentação do bouncer) logou o erro abaixo:

2017-12-27 13:48:54.506 7406 LOG C-0x948218: dbteste/usrteste@10.70.2.186:45200 closing because: query_wait_timeout (age=120)
2017-12-27 13:48:54.506 7406 WARNING C-0x948218: dbteste/usrteste@10.70.2.186:45200 Pooler Error: query_wait_timeout

Alguém já passou por este problema?

Qual o modo do PgBouncer que está utilizando ?
Se estiver com o modo connection, você pode passar por esse "problema" se todas as conexões do pool estiverem em uso.
Se sua aplicação faz uso de conexões persistentes, você terá de passar ao modo "statement" do PgBouncer.

[]s
Flavio Gurgel


_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Reply | Threaded
Open this post in threaded view
|

Re: PgBouncer: query_wait_timeout

Crauss, Jacson
Quando ao número de conexões eu havia verificado e não está nem perto do limite que coloquei... esse não é o problema a princípio.
Fiz mais uns testes e vi que minha conexão fica "presa" até que eu encerre ela no SO (ou restart no bouncer), depois libera nova conexão normalmente.
Estou com pool_mode = session... vou mudar para "statement", Flávio.

Obrigado por enquanto.

2017-12-27 14:27 GMT-02:00 Flavio Henrique Araque Gurgel <[hidden email]>:


Em qua, 27 de dez de 2017 às 17:18, Crauss, Jacson <[hidden email]> escreveu:
Pessoal, boa tarde!

Tenho um servidor com alguns databases que são acessados através do pgbouncer. O que está ocorrendo para alguns (somente para alguns) databases é que ao tentar conectar através do pgadmin, jenkins ou jboss, fica um tempo travada a ferramenta, como se estivesse tentando conectar, mas no log do pgbouncer não loga nada, nem a tentativa de conexão, e após algum tempo ocorre erro de timeout, e aí sim aparece no log do bouncer o erro...

No exemplo abaixo eu fiz a tentativa de conexão por volta das 13:46, e dois minutos depois (é o tempo default do query_wait_timeout pelo que eu li na documentação do bouncer) logou o erro abaixo:

2017-12-27 13:48:54.506 7406 LOG C-0x948218: dbteste/usrteste@10.70.2.186:45200 closing because: query_wait_timeout (age=120)
2017-12-27 13:48:54.506 7406 WARNING C-0x948218: dbteste/usrteste@10.70.2.186:45200 Pooler Error: query_wait_timeout

Alguém já passou por este problema?

Qual o modo do PgBouncer que está utilizando ?
Se estiver com o modo connection, você pode passar por esse "problema" se todas as conexões do pool estiverem em uso.
Se sua aplicação faz uso de conexões persistentes, você terá de passar ao modo "statement" do PgBouncer.

[]s
Flavio Gurgel


_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Reply | Threaded
Open this post in threaded view
|

Re: PgBouncer: query_wait_timeout

Daniel Silva



De: "Crauss, Jacson" <[hidden email]>
Para: "Comunidade PostgreSQL Brasileira" <[hidden email]>
Enviadas: Quarta-feira, 27 de dezembro de 2017 14:40:54
Assunto: Re: [pgbr-geral] PgBouncer: query_wait_timeout

Quando ao número de conexões eu havia verificado e não está nem perto do limite que coloquei... esse não é o problema a princípio.
Fiz mais uns testes e vi que minha conexão fica "presa" até que eu encerre ela no SO (ou restart no bouncer), depois libera nova conexão normalmente.
Estou com pool_mode = session... vou mudar para "statement", Flávio.

Obrigado por enquanto.

2017-12-27 14:27 GMT-02:00 Flavio Henrique Araque Gurgel <[hidden email]>:


Em qua, 27 de dez de 2017 às 17:18, Crauss, Jacson <[hidden email]> escreveu:
Pessoal, boa tarde!

Tenho um servidor com alguns databases que são acessados através do pgbouncer. O que está ocorrendo para alguns (somente para alguns) databases é que ao tentar conectar através do pgadmin, jenkins ou jboss, fica um tempo travada a ferramenta, como se estivesse tentando conectar, mas no log do pgbouncer não loga nada, nem a tentativa de conexão, e após algum tempo ocorre erro de timeout, e aí sim aparece no log do bouncer o erro...

No exemplo abaixo eu fiz a tentativa de conexão por volta das 13:46, e dois minutos depois (é o tempo default do query_wait_timeout pelo que eu li na documentação do bouncer) logou o erro abaixo:

2017-12-27 13:48:54.506 7406 LOG C-0x948218: dbteste/usrteste@10.70.2.186:45200 closing because: query_wait_timeout (age=120)
2017-12-27 13:48:54.506 7406 WARNING C-0x948218: dbteste/usrteste@10.70.2.186:45200 Pooler Error: query_wait_timeout

Alguém já passou por este problema?

Qual o modo do PgBouncer que está utilizando ?
Se estiver com o modo connection, você pode passar por esse "problema" se todas as conexões do pool estiverem em uso.
Se sua aplicação faz uso de conexões persistentes, você terá de passar ao modo "statement" do PgBouncer.

[]s
Flavio Gurgel


_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

--
Jacson,

como está as configurações de server_lifetime, max_db_connections, max_user_connections e reserve_pool_timeout?

_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Reply | Threaded
Open this post in threaded view
|

Re: PgBouncer: query_wait_timeout

Flavio Henrique Araque Gurgel
In reply to this post by Crauss, Jacson


Em qua, 27 de dez de 2017 às 17:41, Crauss, Jacson <[hidden email]> escreveu:
Quando ao número de conexões eu havia verificado e não está nem perto do limite que coloquei... esse não é o problema a princípio.
Fiz mais uns testes e vi que minha conexão fica "presa" até que eu encerre ela no SO (ou restart no bouncer), depois libera nova conexão normalmente.
Estou com pool_mode = session... vou mudar para "statement", Flávio.

Obrigado por enquanto.

Evite o top post por favor.
Onde eu escrevi "connection" eu queria dizer "session" (eu sempre me confundo com isso).
Sim, usando "statement" você poderá trabalhar com aplicações que mantêm conexões abertas o tempo todo, mas em alguns casos (e são muitos) as aplicações usam prepared statements e o modo session não funcionará.

[]s
Flavio Gurgel 

_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Reply | Threaded
Open this post in threaded view
|

Re: PgBouncer: query_wait_timeout

Crauss, Jacson

2017-12-27 14:53 GMT-02:00 Flavio Henrique Araque Gurgel <[hidden email]>:


Em qua, 27 de dez de 2017 às 17:41, Crauss, Jacson <[hidden email]> escreveu:
Quando ao número de conexões eu havia verificado e não está nem perto do limite que coloquei... esse não é o problema a princípio.
Fiz mais uns testes e vi que minha conexão fica "presa" até que eu encerre ela no SO (ou restart no bouncer), depois libera nova conexão normalmente.
Estou com pool_mode = session... vou mudar para "statement", Flávio.

Obrigado por enquanto.

Evite o top post por favor.
Onde eu escrevi "connection" eu queria dizer "session" (eu sempre me confundo com isso).
Sim, usando "statement" você poderá trabalhr com aplicações que mantêm conexões abertas o tempo todo, mas em alguns casos (e são muitos) as aplicações usam prepared statements e o modo session não funcionará.

Ah, sim... o gmail não tem mais a funcionalidade que seleciona o texto e clica em responder, aí acabei fazendo top post.
Tive que voltar para session por causa das transações abertas explicitamente pela aplicação, mas acredito que resolvi o problema aumentando o default_pool_size, que estava default (20)...

 
 

[]s
Flavio Gurgel 

_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Reply | Threaded
Open this post in threaded view
|

Re: PgBouncer: query_wait_timeout

Daniel Silva



De: "Crauss, Jacson" <[hidden email]>
Para: "Comunidade PostgreSQL Brasileira" <[hidden email]>
Enviadas: Quarta-feira, 27 de dezembro de 2017 16:03:48
Assunto: Re: [pgbr-geral] PgBouncer: query_wait_timeout


2017-12-27 14:53 GMT-02:00 Flavio Henrique Araque Gurgel <[hidden email]>:


Em qua, 27 de dez de 2017 às 17:41, Crauss, Jacson <[hidden email]> escreveu:
Quando ao número de conexões eu havia verificado e não está nem perto do limite que coloquei... esse não é o problema a princípio.
Fiz mais uns testes e vi que minha conexão fica "presa" até que eu encerre ela no SO (ou restart no bouncer), depois libera nova conexão normalmente.
Estou com pool_mode = session... vou mudar para "statement", Flávio.

Obrigado por enquanto.

Evite o top post por favor.
Onde eu escrevi "connection" eu queria dizer "session" (eu sempre me confundo com isso).
Sim, usando "statement" você poderá trabalhr com aplicações que mantêm conexões abertas o tempo todo, mas em alguns casos (e são muitos) as aplicações usam prepared statements e o modo session não funcionará.

Ah, sim... o gmail não tem mais a funcionalidade que seleciona o texto e clica em responder, aí acabei fazendo top post.
Tive que voltar para session por causa das transações abertas explicitamente pela aplicação, mas acredito que resolvi o problema aumentando o default_pool_size, que estava default (20)...

 
 

[]s
Flavio Gurgel 

_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

--

Jacson,

Com certeza isso irá funcionar, fiz uma tradução livre da página do pgbouncer caso tenha interesse.

default_pool_size = quantidade de usuário + database, que poderá manter conexão simultâneo entre pgbouncer e Postgres, exemplo, usuário userweb, na database testedb, poderá manter 20 conexões simultâneas com Postgres. 

_______________________________________________
pgbr-geral mailing list
[hidden email]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral