Pergunta

Meu projeto está usando um repositório SVN que ganha várias centenas de novas revisões por dia. Reside o repositório em um Win2k3-servidor e é servido através do Apache / mod_dav_svn.

Agora eu temo que ao longo do tempo o desempenho irá degradar devido a muitas revisões.
É este medo razoável?
Já estamos planejando fazer upgrade para 1.5, assim que ter milhares de arquivos em um diretório não será um problema a longo prazo.

Subversion em lojas do delta (diferenças), entre 2 revisões, de modo que este ajuda a salvar um monte de espaço, especialmente se você só comprometer código (texto) e não binários (imagens e documentos).

Isso significa que, a fim de verificar a revisão 10 do foo.baz arquivo, svn levará revisão 1 e, em seguida, aplicar os deltas 2-10?

Foi útil?

Solução

Que tipo de repo que você tem? FSFS ou BDB?

(Vamos supor FSFS por agora, já que é o padrão).

No caso de FSFS, cada revisão é armazenada como um diff contra o anterior. Então, você poderia pensar que sim, depois de muitas revisões, seria muito lento.

No entanto, este não é o caso. FSFS usos que são chamados de "pular deltas" para evitar ter de fazer muitas pesquisas em rotações anteriores.

(Então, se você estiver usando uma FSFS repo, a resposta de Brad Wilson está errado.)

No caso de um repo BDB, a cabeça (mais recente) a revisão é full-text, mas as revisões anteriores são construídas como uma série de diffs contra a cabeça. Isto significa que a rotações anteriores tem que ser depois de cada commit recalculado.

Para mais informações: http: //svn.apache. org / repos / asf / subversion / trunk / notas / skip-deltas

P.S. Nossa repo é de cerca de 20GB, com cerca de 35.000 revisões, e nós não ter notado qualquer degradação do desempenho.

Outras dicas

Subversion armazena a versão atual mais como texto completo, com diffs retrospectivas. Isto significa que atualidades cabeça estão sempre rápido, eo que você incrementalmente pagar está olhando cada vez mais para trás na história.

Eu, pessoalmente, não tratados com repositórios Subversion com bases de código maiores do que 80K LOC para o projeto real. A maior repositório Eu realmente tinha era cerca de 1,2 GB, mas isso incluía todas as bibliotecas e utilitários que os usos do projeto.

Eu não acho que o dia a dia de uso será afetado muito, mas qualquer coisa que precisa olhar através dos diferentes revisões poderia abrandar um pouco. Pode até não ser perceptível.

Agora, a partir de um ponto de administração sys de vista, há algumas coisas que podem ajudar a minimizar os gargalos de desempenho. Desde Subversion é principalmente um sistema baseado em arquivo, você pode fazer isso:

  • Coloque os repositórios de reais em uma unidade diferente
  • Certifique-se de que nenhum aplicativo de bloqueio de arquivos, além SVN, estão trabalhando na unidade acima
  • Faça as unidades de pelo menos 7.500 rpm. Você poderia tentar obter 10.000 RPM, mas pode ser um exagero
  • Atualização da LAN para gigabit, se todo mundo está no mesmo escritório.

Este pode ser um exagero para a sua situação, mas isso é o que eu tenho feito geralmente para outras aplicações intensivas de arquivo.

Se você já "superaram" Subversion, então Perforce será o seu próximo passo. É de longe o aplicativo mais rápido controle de origem para projetos muito grandes.

Estamos executando um servidor subversion com gigabytes valor de código e binários, e é até mais de vinte mil revisões. Ainda não há lentidão.

Subversion armazena apenas as delta (diferenças), entre 2 revisões, então isso ajuda a salvar um monte de espaço, especialmente se você só comprometer código (texto) e não binários (imagens e documentos).

Além disso eu já vi um monte de projetos muito grandes usando svn e nunca se queixou sobre o desempenho.

Talvez você está preocupado com tempos de check-out? então eu acho que isso seria realmente um problema de rede.

Oh, e Ive trabalhou em repositórios CVS com 2Gb + de coisas (código, imgs, docs) e nunca teve um problema de desempenho. Desde SVN é uma grande melhoria em cvs eu não acho que você deve se preocupar.

Espero que ajude fácil sua mente um pouco;)

Eu não acho que o nosso subversão abrandado pelo envelhecimento. Nós temos atualmente vários terabytes de dados, principalmente binários. Nós check-out / confirmação diária de até 50 GB de dados. No total, temos actualmente 50000 revisões. Estamos usando FSFS como o tipo de armazenamento e são a interface seja diretamente SVN: (servidor Windows) ou via Apache mod_dav_svn (Gentoo Linux Server)

.

Eu não posso confirmar que este recebe o SVN para desaceleração ao longo do tempo, como configurar um servidor limpa para comparação de desempenho que poderíamos comparar. Nós não poderíamos medir um degration significativa.

Contudo, tenho de dizer que o nosso subversão é extraordinariamente lenta por padrão e, obviamente, é a própria subversão como nós tentamos com outro sistema de computador.

Para algumas razões desconhecidas subversão parece ser limitado CPU servidor completamente. Nosso check-out / commit taxas são limitadas a entre 15-30 megabytes / s por cliente, porque então núcleo da CPU de um servidor está completamente esgotado. Este é o mesmo para um repositório quase vazio (1 gigabyte, 5 revisões) como para o nosso servidor completo (~ 5 Terabyte, 50000 revisões). Afinação como o ajuste de compressão para 0 = off não melhorar esta situação.

Nossa Alta Largura de banda (entrega ~ 1 gigabyte / s) idles FC-array, os outros núcleos ociosos e rede (atualmente de 1 Gigabit / s para clientes, 10 gigabits / s para o servidor) idles também. Ok não realmente em marcha lenta, mas se apenas 2-3% da capacidade disponível é usado Eu chamo isso de marcha lenta.

Não é divertido real para ver todos os componentes em marcha lenta e é preciso esperar para os nossos cópias de trabalho para obter check-out ou comprometidos. Basicamente, eu não tenho nenhuma idéia do que o processo do servidor está fazendo por consumir totalmente um núcleo da CPU o tempo todo durante o checkout / commit.

No entanto, estou apenas tentando encontrar uma maneira de ajustar subversão. Se isso não for possível, poderá ser necessário para mudar para outro sistema.

Por isso: Resposta:. Não faz SVN não degradar no desempenho é inicialmente lenta

É claro que se você não precisa (alto) o desempenho não terá um problema. Btw. todos os acima se aplica a subversioon 1,7 última versão estável

As únicas operações que possam retardar são coisas que lêem informações de várias revisões (por exemplo SVN isentos).

Não estou certo ..... Eu estou usando SVN com Apache no CentOS 5.2. Funciona ok. Número de revisão foi 8230 algo assim ... E em todas as máquinas cliente Commit era tão lento que tivemos de esperar pelo menos 2min para um arquivo que é de 1 KB. Estou a falar de um arquivo que não tem grande tamanho do arquivo.

Então eu fiz um novo repositório. Iniciado a partir rev. 1. Agora funciona ok. Rápido. svnadmin usado criar xxxxxx. não verificar se é FSFS ou BDB .....

Talvez você deve considerar melhorar o seu fluxo de trabalho.

Não sei se um repos terá perf questões nestas condições, mas você capacidade para voltar a uma revisão em sã consciência vai.

No seu caso, você pode querer incluir um processo de validação, então uma equipe cometer em um repo líder da equipe, e cada um deles se comprometer com a repo gerente da equipe que cometem aos somente leitura repos empresa limpas. Você tem fazer uma seleção limpa para ele encenar do que comprometem deve ir para o topo.

Desta forma, qualquer pessoa pode voltar a uma cópia limpa, com um fácil de navegar história. Mesclar são muito mais fáceis, e dev ainda pode comprometer sua bagunça, tanto quanto eles querem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top