У нас раньше были проблемы в нашей среде, когда казалось, что мы достигли максимального лимита подключения FreeBSD. Мы приняли меры, продемонстрированные http://nginx.org/en/docs/freebsd_tuning.html и увеличили наш лимит подключений до 500: kern.ipc.somaxconn: 500
У нас все еще есть проблемы, когда мы ожидаем увидеть дополнительные подключения от клиентов к этому конкретному серверу, а у нас их нет, они отсутствуют.
Мы не знаем, проблема ли это в приложении или в сети. Но мне было интересно, есть ли какой-то другой предел, который мы сейчас достигаем, может быть, с максимальным количеством установленных подключений?
Вот несколько графиков, показывающих поведение нашего соединения, которое выглядит странно так, будто оно ограничено 300 соединениями:
Примерное количество недостающих команд на нашем сервере ^
РЕДАКТИРОВАТЬ:
Дополнительные сведения о приложении: Приложение представляет собой tclsh (оболочку tcl), прослушивающую определенный порт TCP, используя приложение сокета для получения соединений. Может это какое-то ограничение на основе tcl или лимит сокетов?
Подробности устранения неполадок: когда я запускаю nmap, чтобы снова и снова "пинговать" нужный порт
for i in {1..600}; do nmap -p 2069 serverIP; done
С netstat я, кажется, получаю следующее:
netstat -Lan | grep 2069
tcp4 193/0/128 *.2069
tcp4 193/0/128 *.2069
tcp4 193/0/128 *.2069
tcp4 193/0/128 *.2069
Похоже, это означает, что я на самом деле максимизирую значения по умолчанию для kern.ipc.somaxconn. Но мы уже установили это значение намного выше значения по умолчанию.
Даже когда я отслеживаю установленные соединения, используя:
netstat -an | grep 2069 | wc -l
У меня всего 192 соединения на 2069. Это означает, что он не принимает больше на этом конкретном порту.
Похоже, на самом деле это был предел приложения. Процесс, прослушивающий сокет 2069, был построен с максимальным количеством 192 прослушивающих соединений.
Я предполагаю, что многие приложения созданы с такими ограничениями, и вполне вероятно, что somaxconn просто увеличивает общее количество допустимых сокетов для прослушивания по сравнению с тем, для чего на самом деле создано приложение.
На ум приходят дескрипторы файлов. Сначала проверьте с ulimit -n
(или, в зависимости от оболочки, limit -n
) если он возвращается 1024
. Если это так, увеличьте предел дескриптора файла с помощью ulimit -n 16384
, limit -n 16384
или так. Посмотрим, поможет ли это.