?

Log in

No account? Create an account

netstat -Lan - mdounin

Feb. 17th, 2009

05:29 pm - netstat -Lan

Previous Entry Share Next Entry

Мне сегодня в очередной раз пришлось искать правильную ссылку про аналог netstat -Lan под линуксом, так что на всякий случай привожу её здесь.

In short: нужно ядро 2.6.18+, нужен netstat c патчем. После этого netstat -nlt должен выдавать приближённую к правде информацию. Говорят что в некоторых дистрибутивах патч уже есть, но как минимум к дебиану на текущий момент это не относится.

К сожалению, что рекомендовать людям с произвольным линуксом - всё так же непонятно (кроме рекомендации переехать на FreeBSD :)). Особенно учитывая отсутствие отличий в выводе непатченого netstat'а и патченого на отдыхающей машине. Но ещё лет пять и всё будет. :)

Comments:

[User Picture]
From:anight
Date:February 17th, 2009 04:56 pm (UTC)
(Link)
А я вот тебя зафрендил на всякий случай, чтобы не пропустить чего интересное ;-)

Людям с произвольным линуксом можно порекоммендовать http://www.lexa.ru/nginx-ru/msg11814.html
(Reply) (Thread)
From:mdounin
Date:February 17th, 2009 11:13 pm (UTC)
(Link)
О, и за это тоже спасибо. Т.е. вдумчивый детел с помощью grep'а, awk'а, wc и такой-то матери может сообразить себе инструмент анализа даже на 2.4.*. Это не может не радовать, хотя нетривиальность процесса вызывает.

BTW, а maxqlen (aka backlog) у вас где-нибудь показывают, или догадываться надо?
(Reply) (Parent) (Thread)
[User Picture]
From:anight
Date:February 18th, 2009 10:00 am (UTC)
(Link)
Я думаю что дятлу, не осилившему grep и wc не будет интересен такой уровень детализации системы.

maxqlen равен минимальному из аргумента backlog в listen() и net.core.somaxconn на момент вызова. В отличии от BSD, не нужно догадываться что актуальное значение это x1.5 от выдаваемого ;-)
(Reply) (Parent) (Thread)
From:mdounin
Date:February 18th, 2009 10:18 am (UTC)
(Link)
Ну вот я собственно и спрашиваю где посмотреть, чему он оказался равен для конкретного сокета. Под фрёй - netstat -Lan печатает.
(Reply) (Parent) (Thread)
[User Picture]
From:anight
Date:February 18th, 2009 10:47 am (UTC)
(Link)
Вроде нет такого в линуксе.
(Reply) (Parent) (Thread)
[User Picture]
From:anight
Date:November 5th, 2010 03:49 am (UTC)
(Link)
В 2.6.24 появилось. Можно смотреть через ss -nlt
(Reply) (Parent) (Thread)
[User Picture]
From:funky_dennis
Date:March 26th, 2009 09:08 pm (UTC)
(Link)
Печально вот что:

If listen() is called with a backlog argument value that is less than
0, the function behaves as if it had been called with a backlog argu-
ment value of 0.

A backlog argument of 0 may allow the socket to accept connections, in
which case the length of the listen queue may be set to an implementa-
tion-defined minimum value.


Было бы приятно сделать следующее


sysctl -w net.core.somaxconn=262144


А потом


...
listen (sock_fd, -1);
...


и получить соответствующую очередь для приложения.

А то, что netstat -nlt мне покажет, я и так буду знать :)
(Reply) (Thread)
From:mdounin
Date:March 27th, 2009 04:28 pm (UTC)
(Link)
Не будешь, потому как никто не гарантирует что somaxconn не поменяли после listen().

Во FreeBSD всё приблизительно так и выглядит - listen(..., -1) приводит созданию listen queue размером с somaxconn. Но размер очереди на уже созданных сокетах изменение somaxconn не меняет. И соответственно предполагать, что информация о размере listen queue в этом случае не нужна, - очень опрометчиво.
(Reply) (Parent) (Thread)
[User Picture]
From:funky_dennis
Date:March 27th, 2009 04:40 pm (UTC)
(Link)
вот это и печально
(Reply) (Parent) (Thread)
From:mdounin
Date:March 27th, 2009 06:09 pm (UTC)
(Link)
Нет, печально - это то что ребята, пилящие линукс, не понимают необходимости таких элементарных вещей как netstat -Lan. Как при всём этом люди умудряются держать сервера под линуксом - для меня загадка.

Впрочем, под виндой тоже народ сервера держит, и ничего. :)
(Reply) (Parent) (Thread)
[User Picture]
From:loginblin
Date:January 31st, 2011 07:56 am (UTC)
(Link)
Не FreeBSD конечно, но хоть что-то

netstat -s | fgrep listen
473871 times the listen queue of a socket overflowed

(Reply) (Thread)
[User Picture]
From:loginblin
Date:January 31st, 2011 08:08 am (UTC)
(Link)
Вот кстати что-то похожее на нужный вариант на awk =)

netstat -ntp --tcp | fgrep ESTABLISHED | awk '{ if ($7 == "-") array[$4]=array[$4]+1; } END { for (var in array) print var" "array[var]}'

127.0.0.1:11211 2
80.93.56.133:80 16
(Reply) (Parent) (Thread)
From:mdounin
Date:January 31st, 2011 01:29 pm (UTC)
(Link)
anight дал ссылку на соответствующий способ в первом же комментарии, ага
(Reply) (Parent) (Thread)