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
next 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