
tenho alguns servidores web por perto e para gerenciar o cluster às vezes uso script que abre automaticamente as conexões e sincroniza arquivos com eles usando scripts python, encontrei um problema estranho e não sei como corrigi-lo.
para reproduzir o caso de teste você deve ter um destino remoto que não faça a conexão imediatamente (nem na LAN e nem no localhost) e a conexão deve ser executada sem solicitar senha (usando arquivos-chave)
eu tenho 16 PCs rodando o Fedora, os servidores têm Cent OS 5, s120 e s121 - são 2 servidores que possuo com endereços IP atribuídos /etc/hosts
a s121 e s120
este é um exemplo de comando que abre 9 conexões para s120 + 9 conexões para s121 no mesmo shell ao mesmo tempo.. E FUNCIONA!
gnome-terminal --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab
- e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh
root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" -- tab
-e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh
root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab
-e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh
root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab -e "bash -c \"ssh root@s121;\"" --tab
-e "bash -c \"ssh root@s121;\""
este comando TENTA abrir 15 conexões no mesmo shell, todas 15 TO-> s120
gnome-terminal --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab
-e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh
root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\""
--tab - e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash
- c \"ssh
root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\""
--tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c \"ssh root@s120;\"" --tab -e "bash -c
\"ssh root@s120;\""
e tentará abrir 15 conexões, que quase imediatamente 5 guias se fecham e apenas 10 conexões permanecem abertas. esse problema também acontece em terminal_xfce
(o que eu prefiro porque achei o gnome-terminal um pouco menos estável)
parece que mais de 10 conexões de abertura simultâneas não são permitidas,
parece que não são permitidas mais de 10 conexões simultâneas no início, mas se eu abrir 10 guias e esperar que as conexões sejam iniciadas, posso abrir outro terminal com 10 guias para o mesmo servidor.
(quero dizer também que os resultados deste teste são os mesmos com os firewalls IP TABLES desativados no cliente e nos servidores)
Devo dizer também que esse problema é irritante, especialmente em lsyncd
execuções rsync
durante a sincronização de vários destinos no sistema de arquivos no mesmo servidor, levando a resultados inesperados porque as conexões são encerradas pelo sistema operacional, o caso de teste do terminal é apenas o mais simples de reproduzir, mesmo se menos problemático de lidar.
Responder1
Se todas as suas conexões usarão comandos de script... por que usar as guias do gnome-terminal? Você está usando muitos recursos dos quais realmente não precisa e que podem estar contribuindo para os fatores limitantes que está enfrentando.
Você deverá conseguir obter um número quase ilimitado (para seus propósitos) de conexões se deixar o sistema lidar com as conexões em vez de forçar a intervenção do gnome-terminal.
for a in $( seq 1 50 ); do
ssh root@s120 my_cool_script &
ssh root@s121 my_cool_script &
done
wait
Isso deve criar 100 conexões (50 para s120, 50 para s121) em segundos, todas executando 'meu_legal_script'. Contanto que tudo o que você esteja fazendo esteja programado, tudo ocorrerá bem.
O comando 'wait' faz com que o script aguarde a conclusão de todos os trabalhos em segundo plano antes de continuar. Você pode não precisar/querer isso.
(além disso, é muito menos digitação...)
Responder2
Procure MaxStartups em /etc/ssh/sshd_config.
Limita os logins simultâneos não autorizados ao sshd.
O padrão é 10.