Erland's already explained what recv is. The buffer the error message is
talking about refers to the TCP/IP stack's buffers. The error you're seeing
can be caused by multiple things: too much data queued up for send via
TCP/IP or you're out of ephemeral sockets. The big problem is that the
number of available ephmeral sockets doesn't change just because you have a
massive amount of RAM. I'm not a Winsock expert, but running out of
ephemeral sockets is common problem on Windows. Well, not that common, but
it's a fairly well known occurrence amoung the networking guru's (I'm *not*
one of those).
> (Is it at all relevant that sql server is running on the same box?)
Maybe: it definitely won't help
> I know for a fact we are not using too many TCPIP sockets or running
> too many socket servers.
Are you sure? Because it's not just how many you have open simultaneously:
if you're rapidly opening and closing sockets you could cause the problem
you're seeing... there's a timeout period before the socket you closed is
returned to the available pool. Also, I haven't worked with Java's sockets
that much: if you don't explicitly close the socket, does it stick around
until a garbage collection cycle?
Download tcpview.exe from sysinternals.com: when the problem occurs, fire it
up and see what process has the greatest number of sockets out there. If
I'm correct, you'll probably see a bunch of sockets associated with one or a
few processes (and they'll probably be in the TIME_WAIT state...)
Here's some links that may help
A discussion of ephemeral ports
See this for some help on the Windows side (but be careful!)
See this for someone with a similar problem...