Re: read() returns ETIMEDOUT on steady TCP connection
- From: Peter Jeremy <peterjeremy@xxxxxxxxxxxxxxxx>
- Date: Sun, 20 Apr 2008 12:50:11 +1000
On Sat, Apr 19, 2008 at 03:27:28PM +0100, Mark Hills wrote:
I'm are having a trouble with TCP connections being dropped with "read:
Operation timed out". What is unusual is that this is happening right in
the middle of sending a steady stream of data with no network congestion.
Can you give some more detail about your hardware (speed, CPU,
available RAM, UP or SMP) and the application (roughly what does the
core of the code look like and is it single-threaded/multi-threaded
and/or multi-process).
systat doesn't show problems inbound; all packets received are delivered to
the upper layer. But on outbound, there is consistent 'output drops':
IP Output
7028 total packets sent
7028 - generated locally
314 - output drops
As the number of outbound connections increases, the 'output drops'
increases to around 10% of the total packets sent and maintains that ratio.
There's no problems with network capacity.
'output drops' (ips_odropped) means that the kernel is unable to
buffer the write (no mbufs or send queue full). Userland should see
ENOBUFS unless the error was triggered by a fragmentation request.
I can't explain the problem but it definitely looks like a resource
starvation issue within the kernel.
--
Peter Jeremy
Please excuse any delays as the result of my ISP's inability to implement
an MTA that is either RFC2821-compliant or matches their claimed behaviour.
Attachment:
pgp7qcsVPThHN.pgp
Description: PGP signature
- Follow-Ups:
- Re: read() returns ETIMEDOUT on steady TCP connection
- From: Mark Hills
- Re: read() returns ETIMEDOUT on steady TCP connection
- References:
- read() returns ETIMEDOUT on steady TCP connection
- From: Mark Hills
- read() returns ETIMEDOUT on steady TCP connection
- Prev by Date: Re: Network Instability when upgrading to 4GB of RAM
- Next by Date: Re: Network Instability when upgrading to 4GB of RAM
- Previous by thread: read() returns ETIMEDOUT on steady TCP connection
- Next by thread: Re: read() returns ETIMEDOUT on steady TCP connection
- Index(es):