[squid-users] Performance issue -- serving from cache
Alex Rousskov
rousskov at measurement-factory.com
Mon Feb 16 01:00:15 UTC 2026
On 2026-02-14 14:45, Brad House wrote:
> I've got a squid deployment where serving from cache can be slower than
> an uncached download. I'm seeing speeds of around 50MB/s when serving
> from cache, which is much slower than anticipated. Infact, when hitting
> fast upstream servers, serving of a non-cached asset is faster (even
> though its still hitting squid to fetch it).
>
> I'm thinking there's got to be something wrong with my squid
> configuration, I'm currently running on Rocky Linux 10 with Squid 6.10-6.
>
> The VM I'm using currently has 4 cores, 16G RAM and 100G of usable
> space. I used fio to measure disk performance and I got
>
> * Random Write: 3629MiB/s (1MB block), 33.2k (4k block) IOPS
> * Random Read: 8391MiB/s (1MB block), 43.5k (4k block) IOPS
What speed to you get when Squid serves the object from the memory
cache? Do not configure a disk cache for this test to make sure that
Squid is not reading from disk...
I cannot help with AUFS cache_dirs, but _if_ AUFS code uses 4KByte I/O
blocks, then 50MByte/s you are measuring is equivalent to 12K IOPS which
is arguably not that bad for that long-neglected AUFS code (compared to
"raw" 44K IOPS performance you measured with fio)!
Please note that I am not trying to imply that rock cache_dir with a
large slot-size setting would work faster than AUFS. And even if
properly configured rock does work faster than AUFS, I would be really
surprised if Squid can approach Traffic Server performance! The two
projects had vastly different focus and resources.
HTH,
Alex.
> Adding more cpu cores or ram doesn't appear to impact performance.
>
> The underlying infrastructure is made up of hypervisors with dual 100G
> uplinks, both the client and squid run on the same hypervisor cloud.
> Network performance is not the issue.
>
> As a test, I spun up Apache Traffic Server and get over 800MB/s when
> serving from cache.
>
> We have a large on site build system that spins up runners for GitHub
> actions, and they're constantly fetching large assets from the internet
> for each build, hence our desire for a caching proxy. We'd rather not
> switch to Apache Traffic Server as that doesn't have SSL bump capability
> (we haven't yet enabled that capability in squid, however). Hopefully
> there's a simple configuration I'm missing.
>
> Just for testing I was pulling large image via http that is below my max
> object size:
> http://mirrors.edge.kernel.org/ubuntu-releases/20.04.6/ubuntu-20.04.6-live-server-amd64.iso
>
> Configuration below:
>
> acl public src 0.0.0.0/0
> acl SSL_ports port 443
> acl Safe_ports port 80
> acl Safe_ports port 443
> http_access deny !Safe_ports
> http_access deny CONNECT !SSL_ports
> http_access allow localhost manager
> http_access deny manager
> http_access allow public
> http_access deny to_localhost
> http_access deny to_linklocal
> http_access deny all
> http_port 8080
> maximum_object_size 2 GB
> cache_dir aufs /var/spool/squid 325632 16 256
> cache_mem 1000 MB
> maximum_object_size_in_memory 102400 KB
> coredump_dir /var/spool/squid
> refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
> refresh_pattern deb$ 129600 100% 129600
> refresh_pattern udeb$ 129600 100% 129600
> refresh_pattern tar.gz$ 129600 100% 129600
> refresh_pattern tar.xz$ 129600 100% 129600
> refresh_pattern tar.bz2$ 129600 100% 129600
> refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
> refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
> refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
> refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
> refresh_pattern changelogs.ubuntu.com\/.* 0 1% 1
>
>
> Thanks!
>
> -Brad
>
>
> _______________________________________________
> squid-users mailing list
> squid-users at lists.squid-cache.org
> https://lists.squid-cache.org/listinfo/squid-users
More information about the squid-users
mailing list