High Frequency executa um script em outro servidor

1

No meu aplicativo eu tenho dois servidores (privados e externos) e há uma necessidade de o servidor privado executar um script no servidor externo.

Usando o ssh, estou tentando testar os limites de quantas conexões ele manterá:

while (1)
  foreach k (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 )
    ssh -i /path/to/key user@host "ls;sleep 0.3" &
    sleep 0.06  # <=16.6 times/sec
  end
end

O servidor externo (CPU de 2 núcleos, 4 GB de RAM) consegue manter as conexões de entrada quando estão a uma taxa de aproximadamente 16 / seg. Qualquer coisa mais rápida do que isso, ela tem problemas de conexão e a carga da CPU é superada (o total de tarefas e a quantidade de processos de zumbis começam a se acumular. Entretanto, o uso da memória parece baixo).

A mensagem de erro que vemos no servidor privado após alguns segundos de conexões de alta frequência é

 ssh_exchange_identification: Connection closed by remote host

executando o mesmo script de teste no servidor externo, não vemos um problema com essa taxa (a carga da CPU é de aproximadamente 7%, não há zumbis).

Assumindo que é um problema ssh, então adicionamos estes no arquivo de configuração ssh e reiniciámos o serviço ssh, mas isso não ajudou:

MaxStartups 20:50:100
MaxSessions 100

UPDATE

Como sugerido, tentei usar o ControlMaster. Aqui está o que eu fiz:

Adicionou isto ao ~ / .ssh / config no servidor privado:

Host <external_host_ip>
       ControlMaster auto
       ControlPath ~/.ssh/cm_socket/%r@%h:%p
       ControlPersist 600

Criada a primeira conexão:

 ssh -M -S /home/user/.ssh/cm_socket/user@host_ip:22 -i ~/key.pem  user@host_ip

Eu verifiquei e algo aconteceu na pasta 'cm_socket':

$ ll ~/.ssh/cm_socket/
srw------- 1 user user    0 Oct 18 18:10 user@host_ip:22=

mas quando tentei fazer um ssh subseqüente sem a chave, não funcionou:

$ ssh -M -S /home/user/.ssh/cm_socket/user@host_ip:22 user@host_ip
Permission denied (publickey).

Existe uma maneira de aumentar a taxa de transferência que pode ser manipulada por essa configuração?

    
por mimusheli 18.10.2016 / 14:48

1 resposta

0

Use ControlMaster :

Host <external_host_ip>
   ControlMaster auto
   ControlPath ~/.ssh/cm_socket/%r@%h:%p
   ControlPersist 600
   User user
   IdentityFile ~/key.pem

E, em seguida, conecte-se usando apenas ssh host_ip . A primeira sessão inicia a conexão, as outras (até 100 consecutivas de acordo com sua configuração) reutilizarão a primeira. Deve ficar muito mais rápido.

    
por Jakuje 18.10.2016 / 18:24