"Ss -s" рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ

Netstat рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ ss рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдмрд╣реБрдд рдмрд╛рд░ рдПрдХрддреНрд░рд┐рдд (рд╕рд╛рд░рд╛рдВрд╢) рдЬрд╛рдирдХрд╛рд░реА " ss -s " (рдпрд╛ " ss - ssummary ") рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдлрд╝реАрд▓реНрдб рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?

# ss -s
Total: 15046 (kernel 16739)
TCP:   39306 (estab 11458, closed 25092, orphaned 110, synrecv 0, timewait 24929/0), ports 0

Transport Total     IP        IPv6
*	  16739     -         -        
RAW	  0         0         0        
UDP	  15        5         10       
TCP	  14214     1214      13000    
INET	  14229     1219      13010    
FRAG	  0         0         0        

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рд╣реИрдВред

рд╕рддреНрдп рдХрд╛ рд╕реНрд░реЛрдд рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб ┬лss┬╗ iproute2 / misc / ss.c рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ ред " Ss -s" рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ Print_summary рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рд╕рдВрд╕реНрдХрд░рдг 4.17.0 рд╕реЗ рдкрд╣рд▓реЗ, "ss -s" рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдКрдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред 90ee99d рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж , рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдиреЗ рд▓рдЧрд╛:

# ss -s
Total: 15046
TCP:   39306 (estab 11458, closed 25092, orphaned 110, timewait 24929)

Transport Total     IP        IPv6
RAW	  0         0         0        
UDP	  15        5         10       
TCP	  14214     1214      13000    
INET	  14229     1219      13010    
FRAG	  0         0         0        

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, "рдХрд░реНрдиреЗрд▓" рдлрд╝реАрд▓реНрдб рдХреЛ "рдХреБрд▓" рд▓рд╛рдЗрди рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред "рдЯреАрд╕реАрдкреА" рд▓рд╛рдЗрди рдореЗрдВ, рдлрд╝реАрд▓реНрдб "synrecv" рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ (рдкрд╣рд▓реЗ) рд╕рдВрдЦреНрдпрд╛ "рдЯрд╛рдЗрдорд╡реЗрдЯ" рдмрдиреА рд╣реБрдИ рдереА, рдлрд╝реАрд▓реНрдб "рдкреЛрд░реНрдЯ" рд╣рдЯрд╛ рджреА рдЧрдИ рдереАред рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ "" рдкрдВрдХреНрддрд┐ "рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ" * рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрде рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: " рд╣рдордиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЯреВрдЯреЗ рд╣реБрдП рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ ред"

рдХреНрдпрд╛ рдЯреВрдЯ рдЧрдпрд╛ рдерд╛?


рдореЗрдВ print_summary рд╕рдВрд╕реНрдХрд░рдг 4.16.0 рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ slabstat , рдлреЛрди рдХрд░рдХреЗ рднрд░рд╛ get_slabstat ред рдЕрдЧрд░ рд╣рдо get_slabstat рдХреЙрд▓ рдХреЛ рд╢реЗрд▓ рдХрдорд╛рдВрдб рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ:

# egrep '^(sock|tcp_bind_bucket|tcp_tw_bucket|tcp_open_request|skbuff_head_cache)' /proc/slabinfo | awk '{ print $1, $2; }'

рдЬрд╣рд╛рдВ "/ proc / slabinfo" рд╕реЗ рдХреБрдВрдЬрд┐рдпрд╛рдБ "slabstat" рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрддреА рд╣реИрдВ:

struct slabstat {
	int socks;       // sock, net/core/sock.c:sk_init,   2.6.12
	int tcp_ports;   // tcp_bind_bucket, net/ipv4/tcp.c:tcp_init
	int tcp_tws;     // tcp_tw_bucket, net/ipv4/tcp.c:tcp_init,   2.6.14
	int tcp_syns;    // tcp_open_request, net/ipv4/tcp.c:tcp_init,   2.6.13
	int skbs;        // skbuff_head_cache, net/core/skbuff:skb_init,  
};

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдЬ "/ proc / slabinfo" рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдХреЗрд╡рд▓ "tcp_bind_bucket" рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ "рдкреЛрд░реНрдЯ" рдлрд╝реАрд▓реНрдб рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ тАЬрдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░, рдбрд┐рдЬрд╝рд╛рдЗрди, рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдитАЭ рдкреБрд╕реНрддрдХ рд╕реЗ рдЕрдкрдирд╛ рд╡рд┐рд╡рд░рдг рджреВрдВрдЧрд╛ред рдПрд╕ред рд╕реЗрда рдФрд░ рдПрдордП рд╡реЗрдВрдХрдЯреЗрд╢реБрд▓реБ 2008 рджреНрд╡рд╛рд░рд╛ IEEE рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЛрд╕рд╛рдпрдЯреА ":
This structure keeps information about the port number usage by sockets and the way the port number is being used. The information is useful enough to tell the new binding socket whether it can bind itself to a particular port number that is already in use. The data structure also keeps track of all the socketтАЩs that are associated with this port number.
рдЕрдм рдлрд┐рд░ рд╕реЗ рд╡рд╣реА рдмрд╛рдд, рд▓реЗрдХрд┐рди рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рд░реВрдк рдореЗрдВ (рдореЗрд░реЗ рд╕реЗ рдХрд▓рд╛рдХрд╛рд░ рдРрд╕рд╛ рд╣реИ):



рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреБрдЫ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ? рд╕реНрд▓реИрдм "рдЬреБрд░реНрд░рд╛рдм" (2.6.12 рдореЗрдВ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛) рдХрд╛ рдПрдХ рдЧреИрд░-рдореВрд▓реНрдп рд╣реИред рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреБрд▓рдирд╛ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдг , рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕рдХреА рдХреБрдВрдЬреА "рдЬреБрд░реНрд░рд╛рдм" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рд╡рд╣ рдХреНрд╖реЗрддреНрд░ рдореВрд▓реНрдп рдореЗрдВ рдорд┐рд▓ рдЬрд╛рдПрдЧреАред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ "рдиреЗрдЯ / рд╕реЙрдХреЗрдЯ.c: init_inodecache" рд╕реЗ "sock_inode_cache" "sockfs" рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ - "рдЗрдирдХреЛрдб" рдХреА рдПрдХ рд╕реВрдЪреА рдЬрд┐рд╕рдореЗрдВ "рд╕реЙрдХреЗрдЯ рд╕реНрдЯреНрд░рдХреНрдЪрд░" рд╣реИ (рд╢рд╛рдпрдж рдпрд╣ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓реЗрдЦрдХ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рд╣реИ):

# egrep '^sock' /proc/slabinfo | awk '{ print $1, $2; }'
sock_inode_cache 16739

рдареАрдХ рд╣реИ, "tcp_bind_bucket" рдХрд░реНрдиреЗрд▓ рдмрд┐рд▓реНрдб рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реА рдЧрд╛рдпрдм рд╣реИ (рдФрд░, рддрджрдиреБрд╕рд╛рд░, "рдкреЛрд░реНрдЯ" рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╣рдореЗрд╢рд╛ "0" рдорд╛рди рд╣реЛрддрд╛ рд╣реИ)ред

рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рд╡рд░рдг "ss -s"


рдХреНрд╖реЗрддреНрд░ рдЧрдгрдирд╛ рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ (ESTABLISHED, CLOSE-WAIT, TIME-WAIT, рдЖрджрд┐)ред рдЬреЛ рд▓реЛрдЧ рднреВрд▓ рдЧрдП рд╣реИрдВ, рд╡реЗ рд╡рд┐рдХрд┐ рдХреА рдорджрдж рдХрд░рддреЗ рд╣реИрдВ: рдЖрд░рдпреВ , рдПрди ред

рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:

# cat /proc/net/sockstat
sockets: used 15046
TCP: inuse 1205 orphan 111 tw 24952 alloc 14368 mem 5890
UDP: inuse 5 mem 86
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0

# cat /proc/net/sockstat6
TCP6: inuse 13000
UDP6: inuse 10
UDPLITE6: inuse 0
RAW6: inuse 0
FRAG6: inuse 0 memory 0

# egrep '^Tcp:' /proc/net/snmp
Tcp: RtoAlgorithm RtoMin RtoMax ... AttemptFails EstabResets CurrEstab ...
Tcp: 1 200 120000 ... 1348218 4095008 11458 ...

"рдиреЗрдЯ / рд╕реЛрдХрд╕реНрдЯреИрдЯ" рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдпреЛрдВ (рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП):



  • рдХреБрд▓ - TIME_WAIT рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реЙрдХреЗрдЯ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ (рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯ рд╕рд╣рд┐рдд);
  • рдЯреАрд╕реАрдкреА: - рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдореЗрдВ TCP рд╕реЙрдХреЗрдЯ (IPv6 рд╕рд╣рд┐рдд) рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛, tw рд╕реЙрдХреЗрдЯ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИ alloc рддрдерд╛рдХрдерд┐рдд рдХреЗ рдХрд╛рд░рдг рд╕реЙрдХреЗрдЯред " рдбреЗрде рд░реЛ " - рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рддрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдЬрдм рддрдХ рдХрд┐ рдмрдВрдж рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рди рд╣реЛ рдЬрд╛рдПред
    • orphaned тАФ ┬л┬╗ TCP (, );
    • timewait тАФ TCP TIME_WAIT;
    • inuse TCP, UDP, RAW тАФ v4 CLOSED TIME_WAIT;
    • inuse FRAG (bool) тАФ , memory тАФ ( mem, ).

"рдиреЗрдЯ / рд╕реЙрдХрд╕реНрдЯреИрдЯ 6" рдХреА рд╕рд╛рдордЧреНрд░реА рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдорд╛рди: рдпрд╣рд╛рдВ



рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ - " рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ / рдЯреЛрдЯрд▓ " " рдЖрдИрдкреА " рдФрд░ " рдЖрдИрдкреАрд╡реА 6 " рдорд╛рдиреЛрдВ рдХрд╛ рдХреБрд▓ рдпреЛрдЧ рд╣реИ ред

рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ "рдиреЗрдЯ / рд╕реНрдиреИрдореНрдк" рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред RFC-4022 рдХреЗ рдЕрдиреБрд╕рд╛рд░ , " tcpCurrEstab " "рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдпрд╛ рддреЛ рд╕реНрдерд╛рдкрд┐рдд рдпрд╛ рдмрдВрдж рд╣реИ"ред



рдФрд░ рдЕрдВрддрд┐рдо " рдмрдВрдж " рдлрд╝реАрд▓реНрдб TIME_WAIT рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рд╕реЙрдХреЗрдЯреНрд╕ рдФрд░ рд╕реЙрдХреЗрдЯреНрд╕ рдХрд╛ рдпреЛрдЧ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ TCPv4 рдФрд░ TCPv6 рд╕реЙрдХреЗрдЯреНрд╕ рдХрд╛ рдпреЛрдЧ рд╣реИ:



PS рдФрд░ рдЧреНрд░рд╛рдлрд╝ рдкрд░ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред

All Articles