2013/9/27 Jean Pereira <[email protected]>

>  On 09/26/2013 07:57 PM, Matheus de Oliveira wrote:
>
>
>
>
> 2013/9/26 Adriano Espinoza de Oliveira <[email protected]>
>
>> Boa tarde pessoal.
>>
>>
>  Boa noite... =D
>
>
>
>>   Hje de manhã tivemos "too many clients" no banco, eu não esta na
>> empresa, e o adm de redes foi lá e derrubou um monte de conexões do
>> postgres que ele achou q eram antigas...
>>
>>
>    Bom, a alguns anos atrás, fiz isso também, se não me engano também era
> na versão 8.x (não lembro exato porque faz tempo, talvez seja a 7.x).
>
>
>   Derrubou como? Se foi um "kill -9" é bom dar um "kill -9  `pidof
> cara_que_fez_isso`"... =P
>
>
>  Estou brincando viu, vamos lá ...
>
>   O banco ficou inacessível, ele fez um restart do banco, que não subiu.
>> Teve que apagar o PID na unha e depois o banco subiu...
>>
>>
>  Ok. Normal...
>
>
>
>>   Depois disso, quando cheguei, notei que o banco estava se derrubando e
>> subindo sozinho, exibindo essas mensagens:
>>
>>  * 2013-09-26 12:09:25 BRT [18539]: [1-1] db=,user= LOG:  server process
>> (PID 23040) was terminated by signal 6*
>> * 2013-09-26 12:09:25 BRT [18539]: [2-1] db=,user= LOG:  terminating any
>> other active server processes*
>> *10.11.0.2 2013-09-26 12:09:25 BRT [23043]: [3-1] db=cimed,user=postgres
>> WARNING:  terminating connection because of crash of another server process
>> *
>> *(...)*
>>
>>
>    (...)
>
> Como um velho conhecido meu fala, o kill é o ultimo do ultimo caso.
>

Na verdade o kill em si não é tão problemático assim, você pode,
tranquilamente usar um `kill -SIGTERM` num backend do postgres para fazer
com que ele cancele a operação e feche a conexão normalmente, é o que o
`pg_terminate_backend` faz (só não tenho certeza absoluta que na 8.1 já era
assim, mas creio que sim), ou ainda, executar um `kill -SIGINT` e fazer com
que ele só cancele a operação corrente, o que é equivalente ao
`pg_cancel_backend`.

Inclusive, você pode fazer o mesmo com o postmaster [2].

Agora, o `kill -9` (SIGKILL) não pode ser "ouvido" pelo PostgreSQL, então é
abrupto e não dá chance do pobre elefante se proteger, podendo levar à
problemas mais sérios (como esse).



> Já que você deve ter conexões reservadas ao postgres, e o mesmo consegue
> matar conexão por dentro do banco.
>
>
Esse é um ponto muito importante. Vejo muita gente usando o superusuário
para como usuário da aplicação, isso é COMPLETAMENTE ERRADO. Inclusive pela
mensagem de warning do colega, parece que esse era o caso... ouch...

[1]
http://www.postgresql.org/docs/current/static/functions-admin.html#FUNCTIONS-ADMIN-SIGNAL-TABLE
[2] http://www.postgresql.org/docs/8.1/static/postmaster-shutdown.html

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a