Re: Help, please!

From: Jens-s. Voeckler <voeckler@dont-contact.us>
Date: Tue, 27 Oct 1998 16:48:42 +0100 (MET)

On Tue, 27 Oct 1998, Alexander Dubinin wrote:

I cannot help you with your FDs.

] And... Too many errors when working with same proxy(2.0 PATCH2) of
] my ISP as parent - lot of strings as:
]
] "comm_open: socket failure: (55) No buffer space available"

            An operation on a transport endpoint or pipe was not
            performed because the system lacked sufficient buffer
            space or because a queue was full.

If the buffer sizes are the culprit, maybe a look at
http://www.rvs.uni-hannover.de/people/voeckler/tune/EN/tune.html#water
might help what buffers are all about (even though the text is about
Solaris).

What did your squid say during configuration how much buffer it would
reserve? And how much main memory do you have? For instance, each TCP
connection needs main memory for a send buffer and for a receive buffer.
For example, if you set both your socket buffer defaults to 32k, and your
cache has at one point of time 1024 connections in various TCP states from
SYN_* to TIME_WAIT, that would eat 32k * 2 * 1024 = 64MB of your main
memory. Now, squid eats a lot of memory, too, and you need further memory
(besides the kernel and essential daemons) for the inode tables and
the buffer cache.

Maybe fiddling with Squid's "tcp_recv_bufsize" option might help a little,
but setting your OS defaults is a cleaner way. On one hand, the average
object size is below 16k, thus 16k socket buffer for each direction just
might suffice. On the other hand, if you got long delay paths (SAT links,
etc.), you might want to go for larger socket buffers in order to utilize
your link efficiently (which you cannot do with HTTP/1.0 anyway).

If the connection queues are responsible,
http://www.rvs.uni-hannover.de/people/voeckler/tune/EN/tune.html#backlog
might give you an idea, what these queues are about (even though the
document features Solaris). There should be a way to fiddle with the
connection queue sizes in BSD. Mind, the connection Q size only needs to
contain connections being established, and not yet accept()ed.

Hope this helps a little.

Le deagh dhùrachd,
Dipl.-Ing. Jens-S. Vöckler (voeckler@rvs.uni-hannover.de)
Institute for Computer Networks and Distributed Systems
University of Hanover, Germany; +49 511 762 4726
Received on Tue Oct 27 1998 - 09:03:19 MST

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:42:49 MST