Jmeter distribuiu testes sobre o túnel ssh

1

Durante a configuração do teste distribuído do jmeter, enfrentei um problema de conexão remota com servidores que estão por trás do NAT. Nó com cliente jmeter tem ip externo, todos os servidores estão em LANs diferentes atrás de NAT sem possibilidade de encaminhamento direto de portas.

Eu decidi tentar túneis SSH.

No servidor:

> jmeter-server -Djava.rmi.server.hostname=127.0.0.1
> ssh -N -f -R  55500:127.0.0.1:55500 -R 55501:127.0.0.1:55501 -L 60000:127.0.0.1:60000 jmuser@client_node_ip -p 5000

No cliente:

> jmeter -n -t testcase.jmx -l testcase.jtl -Djava.rmi.server.hostname=127.0.0.1 -r

O teste é bem sucedido no caso de um pequeno número de VU concorrentes (10-100). Mas quando eu especificar mais túnel SSH VUs falhar com os seguintes erros:

accept: Too many open files
open failed: administratively prohibited: open failed
Write Failed: broken pipe

Eu vejo muitas conexões pela porta 60000. O valor ulimit é bastante alto = 1000000 nos nós do servidor e do cliente.

Existe alguma solução alternativa?

    
por user947668 07.08.2015 / 12:47

1 resposta

0

Existem três coisas que eu verificaria:

  • monitora o número de arquivos abertos que o aplicativo possui durante o teste. Existem várias maneiras de fazer isso, mas apenas conto as entradas no subdiretório /fd do processo na árvore de diretórios /proc . Se o seu aplicativo não fechar adequadamente as alças do arquivo quando terminar, isso pode ocorrer.
  • Verifique o ulimit em arquivos abertos, o valor que você tem é extremamente alto para esse limite. Normalmente, o padrão é 1024 e o 65536 é extremamente alto.
  • Monitora o número de conexões estabelecidas na porta 60000. Elas serão contadas no limite de arquivos abertos.

Se for o túnel que está falhando, pode ser o servidor ssh ou o cliente ssh que está falhando. Corrigir o limite de arquivos abertos do servidor ssh provavelmente será mais difícil do que consertar o limite de arquivos abertos dos clientes ssh.

Você pode usar vários túneis para contornar essa limitação. Isso tornará seu script jmeter um pouco mais difícil, já que você precisará distribuir suas conexões pelos túneis.

    
por 07.08.2015 / 14:37