Acabamos de instalar o monitoramento de desempenho em nosso aplicativo da web e estamos vendo um padrão de pico nos tempos de resposta de nosso servidor Postgres 8.4. Os picos correspondem a uma desaceleração significativa em nosso aplicativo da web. O tempo parece ser consumido em grande parte em "Postgres commit":
Estamos auto-hospedando o Postgres 8.4.3 no Ubuntu 10.04, essencialmente com configurações padrão, em uma instância c1.xlarge do Amazon EC2 com EBS. Sim, eu sei que o Postgres no EBS provavelmente não é a melhor configuração. Planejamos mudar para um banco de dados Postgres mais recente no RDS ainda este ano.
Nesse ínterim, há algo óbvio que eu deva observar que possa domar esse padrão pontiagudo?
É difícil dizer exatamente o que seus gráficos dizem. Mas
commit
é projetado para ser lento. Por padrão, o Postgres espera que as alterações sejam gravadas no disco antes decommit
retornar.Você pode deixar
commit
concluir antes que as alterações sejam gravadas no disco com esta opção:Isso certamente deve ajudar a espalhar a E/S de disco necessária
commit
por mais tempo. A desvantagem é que uma interrupção do servidor pode causar a perda de transações concluídas.