Eu tenho uma série de scripts que estão fazendo muitas operações de svn e demorando muito e não temos certeza do motivo. Por exemplo
svn switch svn+ssh://srv/repo/... ...
Isso consistentemente leva cerca de 1,1 segundos. Estamos usando o subversion 1.6.6 no RHEL 5.4.
O tempo para um ssh srv exit
é de cerca de 80 ms (já trabalhamos para diminuir isso)! Então o tempo é não sendo gasto em ssh.
Executando strace
no cliente e no servidor, vejo isso ( sv
é svnserve no servidor, cl
é cliente):
sv 08:29:43.470772 close(4) = 0
sv 08:29:43.470839 unlink("/tmp/tempfile.tmp") = 0
sv 08:29:43.470937 write(1, "( success ( ) ) ", 16) = 16
sv 08:29:43.471062 read(0, "", 4096) = 0
cl 08:29:44.019452 unlink("/export/.../.svn/lock") = 0
Então, parece que meio segundo está preso esperando que essa leitura final seja concluída. Olhando para fontes, eu estou supondo que este é o tempo limite de leitura na biblioteca apr. Eu não vejo onde, apesar de subversão chama a biblioteca com um tempo limite diferente de zero (ignorando para HTML).
Existe uma maneira de reduzir esse tempo limite ou melhorar significativamente o tempo de resposta do comando?
Poderíamos atualizar a versão do servidor se soubéssemos que isso ajudaria, mas não poderíamos atualizar a versão do cliente (pois há cerca de 500 sistemas clientes em uso). Poderíamos recompilar o servidor ou cliente, se necessário.
Obrigado