Подсчет одновременных сетевых сессий в Linux
19 Jul 2018 | Автор: dd |Поднял под клиентов сервер на выделенном гигабите с 40 тысячами IPv6 прокси, под парсинг инстаграмма. Клиент, не долго думая, выдал 100% утилизацию канала, т.ч стало интересно – каким образом можно посчитать количество конкурирующих сессий.
Основной инструментарий для получения сетевой статистики – это команда netstat
Например суммарная статистика по протоколам, доступна в выводе команды:
# netstat -e -s
Если мы хотим увидеть вообще всю статистику, то это можно сделать командой:
# netstat -a
и из неё уже производить выборку через grep по протоколам, установленным соединениям или портам. Например, вывести все установленные соединения:
# netstat -a | grep 'ESTABLISHED'
или подсчитать их количество
# netstat -a | grep 'ESTABLISHED'| wc -l
статистику по всем протоколам, можно получить командой:
# netstat -s -e
но основная проблема netstat в том, что он перебирает сессии одну за другой и в моем случае, вывода команды можно ждать 5-10 минут.
Поэтому для быстрого просмотра активных сессий, лучше воспользоваться более новой командой сетевой статистики, ss. Например для получения полного количества активных сессий, можно использовать:
# ss -s
Вывод будет практически мгновенным. Даже если подсчитывать число сессий в очереди на подключение, то перебор и вывод будет более шустрым.
# ss -t -a | wc -l
Если надо посмотреть общую статистику, то делается это командой
# ss -s
Как вариант, для netstat, можно посмотреть статистику по сессиям, количество установленных, в режиме закрытия и т.д
# netstat -an | awk '/tcp/ {print $6}' | sort | uniq -c
Если же мы хотим посмотреть кличество сессий установленных, например, с каким нибудь внешним айпи (например полезно при проверке прокси фермы), то для этого следует использовать ключи src или dst
Например внешний модем с айпишником 192.168.1.151
# ss src 192.168.89.151
данная команда выведет все установленные сессии, если же добавить счетчик, то число установленных сессий
# ss src 192.168.89.151|wc -l
аналогичный результат даст и команда
# ss -t | grep 192.168.89.151|wc -l
где -t выводит все TCP сокеты, можно также использовать -u и -x для UDP и UNIX сокетов соответственно
а вот если добавить ключ -a для сессий находящихся в состоянии прослушки, то число сессий увеличится
# ss -t -a | grep 192.168.89.151|wc -l
Автор:Alex на 19 Jul 2018
netstat -an | grep “ESTABLISHED” | wc -l
тоже будет быстрым.
-n отключает резолв хостов
[Reply]
anchous Reply:
July 19th, 2018 at 11:35 am
спасибо за дополнение
[Reply]
Автор:Иван на 05 Jun 2023
Не работает команда из комментария Алекса
Выводит 0
[Reply]