[squid-users] Running SMP workers on multi-core systems

Alex Rousskov rousskov at measurement-factory.com
Thu Sep 30 13:30:20 UTC 2021


On 9/30/21 2:49 AM, Praveen Ponakanti wrote:

> I am trying to use the squid cache as an outbound HTTP/S proxy service
> for our production network and would like to scale up the request per
> sec by running it on multi-core systems. 

> I have searched up the archives and config docs, but couldn't find
> anything more recent than the below on setting up SMP workers. 
> https://wiki.squid-cache.org/ConfigExamples/SmpCarpCluster
> https://wiki.squid-cache.org/ConfigExamples/MultiCpuSystem

The two old exotic configurations above are not what you should be
starting with when thinking about SMP support in modern Squids. The best
starting points I know about are

* https://wiki.squid-cache.org/Features/SmpScale
* http://www.squid-cache.org/Doc/config/workers/
* http://www.squid-cache.org/Doc/config/cpu_affinity_map/
* http(s)_port worker-queues option

That Feature wiki page does not get many updates these days; if there is
a conflict between information sources, the directive documentation in
your squid.conf.documented may have more recent information.


> * Can someone please let me know if the config examples in those docs
> still apply to the latest version 5.1.

I bet those use cases themselves do not apply well to your situation.


> * Do we still need the combination of squid, frontend, backend.conf
> files, or is it enabled simply with the "workers" line in the main
> config file? 

The workers directive does not require multiple Squid instances (with
multiple configuration files, etc.).


> * When I attempt to run the squid server with "workers 4" in the
> squid.conf, I get the following error (one for each kid) and the main
> process does not bind to the "http_port 3128". I see several UDP ports
> opened up for each kid process.

> 2021/09/29 00:44:10 kid5| commBind Cannot bind socket FD 11 to [::]: (2) No such file or directory

Unfortunately, I cannot tell exactly what went wrong based on that
low-level message alone, but it could be a variant of [1]. If you cannot
figure it out after checking [1] suggestions, consider sharing "squid
-X" startup cache.log for analysis. There is

[1]
https://wiki.squid-cache.org/Features/SmpScale#Cannot_bind_socket_FD_NN_to_.5B::.5D:_.2813.29_Permission_denied

The UDP ports you are seeing are probably for the internal DNS resolver
which is not SMP-aware.


> * Does anyone have recommendations on the maximum number of workers to
> use on a 64 core host (assuming no other CPU intensive apps are running
> on the same host). Caching is not a must for our initial deployment, so
> we are fine disabling caching.

28-30. See the following wiki section for the corresponding rules of
thumb:
https://wiki.squid-cache.org/Features/SmpScale#How_to_configure_SMP_Squid_for_top_performance.3F


HTH,

Alex.


More information about the squid-users mailing list