[squid-users] TCP out of memory

Amos Jeffries squid3 at treenet.co.nz
Fri Jan 5 07:40:24 UTC 2018


On 04/01/18 21:51, Vieri wrote:
> Hi again,
> 
> I haven't taken a look at Squid's source code, but I guess that when Squid communicates with a c-icap service it acts as a typical socket client, right?
> eg. connect(), write(), read(), close()

Uh, Those are system calls for receiving TCP connections and data I/O.

Squid uses ICAP protocol to communicate with ICAP services. ICAP 
operates as a layer over TCP. So in a way yes, and in a way no.


> 
> Does Squid consider forcing disconnection (close()) if the read() is "too long"?

If you mean "too long" in terms of memory size - there is no such thing 
in TCP. Squid provides a buffer and tells the kernel how much space is 
available there. The OS writes up to that much, no more, maybe less.

If your title "TCP out of memory" is an error you are seeing somewhere. 
That is entirely your system kernel and networking stacks issue. Squid 
has nothing to do with the internal memory management of TCP traffic.


> Is there such a timeout? Is it configurable in squid.conf (only for the c-icap connection)?
> 

What timeout you speak of?

If you mean "too long" earlier in terms of duration to perform a read() 
- there is also no such thing. The OS tells Squid when data is ready and 
the data copy from OS memory to Squid buffer takes trivial amount of 
time to actually happen.


Timeouts can happen between different parts of the ICAP protocol waiting 
for I/O to happen for related message parts. But those have nothing to 
do with TCP memory unless you are suffering a bad case of buffer bloat 
in the network itself.

Amos


More information about the squid-users mailing list