read() returns ETIMEDOUT on steady TCP connection

Peter Jeremy peterjeremy at optushome.com.au
Sun Apr 20 02:50:16 UTC 2008


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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20080420/e88a581a/attachment.pgp


More information about the freebsd-net mailing list