У нас есть более 100 встроенных плат, с которыми нам иногда нужно разговаривать.
Мы нашли лучший способ сделать это надежно (есть некоторые странные интернет-соединения) - это открыть платам несколько обратных туннелей ssh к нашему серверу.
В настоящее время каждая доска открывает по три туннеля, всего около 300. Туннели большую часть времени неактивны.
Влияет ли это на производительность? Если предположить, что у нас не закончатся порты или файловые дескрипторы, что, скорее всего, нас сбивает?
Редактировать: Меня в первую очередь беспокоит несколько сотен неактивный клиенты подключились сразу. Только несколько туннелей будут активно использоваться одновременно.
Ограничение на активные SSH-соединения составляет 65 534 минус количество TCP-портов, используемых в вашей системе. Если мы хотим быть консервативными, скажем просто 60 000 (или для большинства практических целей «Без ограничений»). Вы можете столкнуться с Другой однако системные ограничения ресурсов зависят от машины, к которой вы подключаетесь.
Тем не менее, вы можете захотеть сэкономить на количестве туннелей (действительно ли вам нужно три соединения на плату?), И если вам не всегда нужны соединения, вы можете захотеть, чтобы удаленный сайт инициировал их только при необходимости.
TL; DR: память. Отдых нормальный (для сотен туннелей).
Если предположить, что у нас не закончатся порты или файловые дескрипторы, что, скорее всего, нас сбивает?
Думаю, достаточно безопасно ответить: объем памяти.
Быстрый эксперимент показывает, что фактическое потребление памяти на каждое входящее соединение составляет 4,6 мегабайта. Частично это можно разделить, сказал бы настоящий эксперимент. Исправлено: добавить пространство подкачки.
Кроме того, 86 мегабайт адресного пространства, что довольно много. Скорее всего, он совместно используется, иначе у 32-битного сервера будет исчерпание адресного пространства до 50 подключений. Исправление: используйте 64-битную ОС.
Предполагая, что у нас не заканчиваются порты или дескрипторы файлов,
Верно ли это предположение?
В диапазоне сотен, порты не будет проблемой, если только ваш сервер не является также сервером с высоким трафиком для чего-то еще.
Дескрипторы файлов может быть истощен. Быстрый эксперимент показывает, что на входящее ssh-соединение потребляется 21 файловый дескриптор, не считая оболочки. Ограничение на файловые дескрипторы можно настроить в масштабе всей системы, поэтому оно не должно быть настоящим блокировщиком.
(Эксперименты проводились на 64-битном сервере Debian.)