Netdev List
 help / color / mirror / Atom feed
From: Denys Fedoryshchenko <nuclearcat@nuclearcat.com>
To: netdev@vger.kernel.org
Subject: connect returns EADDRNOTAVAIL on ~600k+ sockets host
Date: Fri, 12 Sep 2014 21:18:45 +0300	[thread overview]
Message-ID: <d9db14adbac97234729b112ebfa87c91@visp.net.lb> (raw)

Hi

I noticed strange behaviour on loaded server (haproxy), while it is 
handling load for https traffic well, tcp monitoring started to give 
false alerts. And here what i found:

HTTPS-BALANCER ~ # telnet 127.0.0.1 23
telnet: can't connect to remote host (127.0.0.1): Cannot assign 
requested address
HTTPS-BALANCER ~ # nc -v 127.0.0.1 23
127.0.0.1 (127.0.0.1:23) open
��\x01��\x1f��\x01��\x03
HTTPS-BALANCER login: ^Cpunt!

The difference is (relevant lines from strace):

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(3, {sa_family=AF_INET, sin_port=htons(0), 
sin_addr=inet_addr("0.0.0.0")}, 16) = 0
rt_sigaction(SIGALRM, {0x41ecfb, [ALRM], SA_RESTORER|SA_RESTART, 
0x7f80725bf5b0}, {SIG_DFL, [], 0}, 8) = 0
alarm(0)                                = 0
connect(3, {sa_family=AF_INET, sin_port=htons(23), 
sin_addr=inet_addr("127.0.0.1")}, 16) = 0
rt_sigaction(SIGALRM, {SIG_IGN, [ALRM], SA_RESTORER|SA_RESTART, 
0x7f80725bf5b0}, {0x41ecfb, [ALRM], SA_RESTORER|SA_RESTART, 0x7


socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(23), 
sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EADDRNOTAVAIL (Cannot assign 
requested address)
write(2, "telnet: can't connect to remote host (127.0.0.1): Cannot 
assign requested address\n", 82telnet: can't connect to remote host 
(127.0.0.1): Cannot assign requested address

So,
bind(3, {sa_family=AF_INET, sin_port=htons(0), 
sin_addr=inet_addr("0.0.0.0")}, 16) = 0
is fixing issue, but is it really supposed to be like this?

Just for information host load and some network stats:
from /proc/net/protocols, i removed irrelevant zero values entries

protocol  size sockets  memory press maxhdr  slab module     cl co di ac 
io in de sh ss gs se re sp bi br ha uh gp em
UDP        816      1       0   NI       0   yes  kernel      y  y  y  n 
  y  n  y  n  y  y  y  y  y  n  y  y  y  y  n
TCP       1640 728255  751777   no     208   yes  kernel      y  y  y  y 
  y  y  y  y  y  y  y  y  y  n  y  y  y  y  y

sockets: used 674375
TCP: inuse 727092 orphan 55119 tw 138533 alloc 729419 mem 745187
UDP: inuse 1 mem 0
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0

0.0.0.0 sockets:
tcp        0      0 0.0.0.0:65530           0.0.0.0:*               
LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               
LISTEN
tcp        0      0 0.0.0.0:8880            0.0.0.0:*               
LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               
LISTEN
tcp        0      0 0.0.0.0:23              0.0.0.0:*               
LISTEN
udp        0      0 0.0.0.0:53073           0.0.0.0:*

127.0.0.1 sockets (this is watchdog, but if i disable, it wont change 
anything)
tcp        0      0 127.0.0.1:65530         127.0.0.1:55649         
TIME_WAIT
tcp        0      0 127.0.0.1:65530         127.0.0.1:41762         
FIN_WAIT2
tcp        0      0 127.0.0.1:65530         127.0.0.1:36863         
TIME_WAIT
tcp        0      0 127.0.0.1:65530         127.0.0.1:34533         
TIME_WAIT
tcp        0      0 127.0.0.1:65530         127.0.0.1:35262         
TIME_WAIT
tcp        0      0 127.0.0.1:65530         127.0.0.1:45872         
TIME_WAIT

             reply	other threads:[~2014-09-12 18:27 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-12 18:18 Denys Fedoryshchenko [this message]
2014-09-12 21:09 ` connect returns EADDRNOTAVAIL on ~600k+ sockets host Denys Fedoryshchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d9db14adbac97234729b112ebfa87c91@visp.net.lb \
    --to=nuclearcat@nuclearcat.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox