где linux fedora ограничивает одновременное открытие подключений в терминале?

где linux fedora ограничивает одновременное открытие подключений в терминале?

У меня есть несколько веб-серверов, и для управления кластером я иногда использую скрипт, который автоматически открывает соединения и синхронизирует с ними файлы с помощью скриптов Python. Я столкнулся со странной проблемой и не знаю, как ее исправить.

для воспроизведения тестового случая у вас должен быть удаленный пункт назначения, который не устанавливает соединение немедленно (ни в локальной сети, ни на локальном хосте), и соединение должно работать без запроса пароля (используя файлы ключей)

У меня 16 ПК с Fedora, серверы с Cent OS 5, s120 и s121 — это два моих сервера с IP-адресами, назначенными /etc/hostss121 и s120.

это пример команды, которая открывает 9 подключений к s120 + 9 подключений к s121 в одной и той же оболочке одновременно.. И ЭТО РАБОТАЕТ!

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;\""

эта команда ПЫТАЕТСЯ открыть 15 соединений на одной и той же оболочке все 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;\""

и он попытается открыть 15 подключений, которые почти сразу же закроются, и только 10 подключений останутся открытыми. эта проблема также происходит в terminal_xfce(который я предпочитаю, потому что я нашел gnome-terminal немного менее стабильным)

похоже, что более 10 одновременных открытых соединений не допускается,

похоже, что изначально разрешено не более 10 одновременных подключений, но если я открою 10 вкладок и подожду, пока соединения начнут работать, то я смогу открыть еще один терминал с 10 вкладками на том же сервере.

(Я также хочу сказать, что результаты этого теста одинаковы при отключенных брандмауэрах IP TABLES как на клиенте, так и на сервере)

Я также должен сказать, что эта проблема раздражает, особенно при lsyncdвыполнении rsyncсинхронизации нескольких назначений в файловой системе на одном сервере, что приводит к неожиданным результатам, поскольку соединения разрываются ОС, тестовый сценарий терминала просто проще воспроизвести, хотя и менее проблематичен в обработке.

решение1

Если все ваши соединения будут использовать скриптовые команды... зачем использовать вкладки gnome-terminal? Вы используете много ресурсов, которые вам на самом деле не нужны, и которые могут способствовать ограничивающим факторам, которые вы испытываете.

Вы сможете получить практически (для своих целей) неограниченное количество подключений, если позволите системе управлять подключениями, а не заставлять вмешиваться gnome-terminal.

for a in $( seq 1 50 ); do
  ssh root@s120 my_cool_script &
  ssh root@s121 my_cool_script &
done
wait

Это должно создать 100 подключений (50 к s120, 50 к s121) в течение нескольких секунд, все они будут работать.мой_крутой_скрипт'. Пока все, что вы делаете, идет по сценарию, все будет хорошо.

Команда 'wait' заставляет скрипт там ждать завершения всех фоновых заданий, прежде чем продолжить работу. Вам это может не понадобиться/не захотеться.

(плюс гораздо меньше ввода текста...)

решение2

Найдите MaxStartups в /etc/ssh/sshd_config.

  • Он ограничивает несанкционированные одновременные входы в систему через sshd.

  • Значение по умолчанию — 10.

Связанный контент