Postgresql gerando um número ridículo de processos de postmaster

2

Por alguma razão, o postgres está gerando > 700 processos postmaster para manipular solicitações de banco de dados e o arquivo de log postgres se estiver cheio de 'EOF inesperado na conexão do cliente', 'pacote de inicialização incompleto' e 'desculpe, muitos clientes já'. netstat me diz que todas as conexões abertas são locais e tenho certeza que estão vindo de postgres internamente. Esta instância em particular está funcionando bem nos últimos 230 dias e nada mudou na configuração. Tem alguma ideia de onde devo procurar tentar resolver este problema?

Esta é a primeira vez que eu diagnostico um problema como este, portanto, se houver alguma medida que eu possa tomar para ajudar a diminuir a causa, também seria útil.

UPDATE: Acontece que havia uma instância do tomcat sendo executado em uma máquina remota que tentava se conectar a postgres por meio de um túnel ssh, fazendo com que o inferno se quebrasse.

    
por Kevin Loney 14.06.2010 / 21:46

1 resposta

2

O Postgres gera um postmaster para cada conexão. É assim que deve funcionar. Se você está gerando uma grande quantidade de processos de postmaster você tem algo iniciando uma tonelada de conexões, e se não é isso que você espera, você provavelmente tem um aplicativo quebrado / mal-comportado criando uma bagunça (um exemplo comum: a conexão do banco de dados, mas nunca fecha. Você vai vazar uma sessão para cada inicialização de conexão).

Se isso for recente, comece com "O que mudou?" Se não, comece a ver todos os seus aplicativos que falam com o Postgres (aproximadamente na ordem do volume de uso) e veja se você consegue encontrar a maçã ruim.

Re: suas mensagens de log -

  • unexpected EOF on client connection
    Algo causou uma conexão Postgres estabelecida a morrer sem fechar corretamente (o postmaster pode ficar por um tempo limpando a bagunça resultante). Descubra o que causou a morte da conexão (o processo iniciou a falha? O aplicativo está mal escrito e sai antes de limpar as alças do banco de dados?) E consertá-lo

  • incomplete startup packet
    Algo conectado ao Postgres e não iniciou um handshake / inicialização adequado do Postgres. Normalmente, o postmaster resultante desaparece em poucos segundos.
    Encontre o que está fazendo isso e conserte . (Este pode ser o seu sistema de monitoramento, alguém fazendo a varredura de portas na sua rede ou um aplicativo mal escrito em algum lugar)

  • sorry, too many clients already
    Acho que este é auto-explicativo. Corrigir o acima e provavelmente irá embora, caso contrário, considere aumentar m ax_connections em postgresql.conf .
por 14.06.2010 / 23:00

Tags