SvnServe.exe Consumindo mais de 200 MB de memória

1

Eu obtive o servidor CollabNet Subversion 1.6.2.37639 instalado no Windows Server 2003 R2 (Enterprise, x86) e, obviamente, configurei-o para ser executado como um serviço. Eu só hospedo um repositório, que é um espelho do svnsync de outro (hospedado em outra máquina). O serviço funciona bem, mas após alguns dias de funcionamento, ocupa mais de 200MB de RAM sem motivo aparente. Além disso, o tráfego para o repositório é muito insignificante. Nenhum mau funcionamento é registrado, e o local não parece ser um vazamento de memória, já que o consumo de memória nunca ultrapassa esse valor.

O tamanho do repositório é de cerca de 194MB e o número de commits / checkouts é de aproximadamente 10 por dia.

Parece bastante memória "desperdiçada" que pode ser alocada, por exemplo, para o cache do banco de dados.

Alguém sabe mais sobre esse problema e como resolvê-lo? Eu acho que poderia ser alguma forma de cache de dados feito por svnserve.exe , mas não encontrei pistas sobre isso na Internet.

    
por Dario Solera 28.06.2009 / 11:41

3 respostas

1

Apenas algumas perguntas para você ...

  • qual é o tamanho do seu repositório Subversion?
  • quantos commits, checkouts e atualizações por hora, dia, semana?
  • Quanto tráfego a outra máquina manipula?

Eu não sou realmente um especialista com o Windows, mas parece que o armazenamento em cache de algum tipo ou seu repositório é bastante grande, então os índices necessários para operá-lo são classificados como "robustos" ":) Existe uma maneira, como no Linux, de ver como a memória é alocada / usada em uma base por processo, talvez através do Gerenciador de Tarefas ou do Monitor de Recursos?

Editar: isso deve ser realmente um comentário à sua pergunta, mas os comentários parecem totalmente mangle toda a formatação e eu realmente queria pontos para as perguntas. : -)

    
por 28.06.2009 / 13:34
1

Você provavelmente desejará estabelecer quanto tempo exatamente está levando para chegar a esse nível de uso de memória. É puramente uma questão de tempo, ou você pode acelerar o processo realizando mais commits, ou fazendo mais check-outs, etc. Os vazamentos de memória são raros, mas possíveis, e geralmente resultam em problemas de desempenho. Estes problemas irão manifestá-los em diferentes pontos para diferentes configurações. O repositório está mais lento depois de atingir 200MB?

Na maioria dos casos, a memória não é "desperdiçada". É o trabalho do sistema operacional gerenciar as alocações de memória em geral, mas alguns aplicativos podem ter sua própria estratégia. Nesse caso, o SVN pode ter um cache, mas também pode alocar mais memória para que seja uma alocação contígua de memória. Geralmente, o SO deve ver a pressão da memória e usar uma variedade de heurísticas para garantir que outros aplicativos continuem funcionando normalmente.

Coisas que eu tentaria:

  • Use o Monitor de desempenho (perfmon.exe) para capturar várias estatísticas sobre o uso da memória, etc.
  • Revise o log de cada repositório para ver quais tipos de operações ocorreram.
  • Reiniciar o serviço e executar um grande número de check-outs, confirmações, etc., usando um script automatizado. Faça cada um deles independentemente antes de tentar uma mistura dos dois tipos de operações. Isso pode ser menos aplicável se você tiver apenas uma réplica pura de outro servidor do subversion.
por 26.07.2009 / 22:19
0

Isso é interessante - eu não ouvi falar de um grande uso de memória do Svnserve nas listas de discussão, talvez você queira poste lá .

    
por 28.06.2009 / 18:33