В Linux 2.6.32, если вы читаете (например, cat) /proc/net/tcp, на очень загруженной системе (например, веб-сервере), вы обнаружите, что чтение 100 тыс. записей занимает более 30 секунд. Это долго.
Что происходит за кулисами? Происходит ли блокировка?
Многие говорят о скорости команды 'ss'. Что делает команда 'ss', чего не делают 'cat /proc/net/tcp' или 'netstat', что делает ее настолько быстрее?
решение1
ss
использует AF_NETLINK
уровень сокетов для общения с ядром. Это протокол более низкого уровня, но он позволяет передавать данные очень быстро и большими порциями. Быстрый взгляд strace
на CentOS 7 показывает, что он устанавливает окно передачи в 1 Мб.