<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>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). </p>
<p>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.</p>
<p>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 </p>
<ul data-list-tree="true" data-indent="1" data-border="0"
style="margin: 4px 0 4px 24px; padding: 0; list-style-position: outside">
<li style="margin: 2px 0; padding: 0; color: #1d1c1d">Random
Write: 3629MiB/s (1MB block), 33.2k (4k block) IOPS</li>
<li style="margin: 2px 0; padding: 0; color: #1d1c1d">Random Read:
8391MiB/s (1MB block), 43.5k (4k block) IOPS</li>
</ul>
<p>Adding more cpu cores or ram doesn't appear to impact
performance.</p>
<p>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.</p>
<p>As a test, I spun up Apache Traffic Server and get over 800MB/s
when serving from cache.</p>
<p>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.</p>
<p>Just for testing I was pulling large image via http that is below
my max object size:
<a class="moz-txt-link-freetext" href="http://mirrors.edge.kernel.org/ubuntu-releases/20.04.6/ubuntu-20.04.6-live-server-amd64.iso">http://mirrors.edge.kernel.org/ubuntu-releases/20.04.6/ubuntu-20.04.6-live-server-amd64.iso</a></p>
<p>Configuration below:</p>
<p>acl public src 0.0.0.0/0<br>
acl SSL_ports port 443<br>
acl Safe_ports port 80<br>
acl Safe_ports port 443<br>
http_access deny !Safe_ports<br>
http_access deny CONNECT !SSL_ports<br>
http_access allow localhost manager<br>
http_access deny manager<br>
http_access allow public<br>
http_access deny to_localhost<br>
http_access deny to_linklocal<br>
http_access deny all<br>
http_port 8080<br>
maximum_object_size 2 GB<br>
cache_dir aufs /var/spool/squid 325632 16 256<br>
cache_mem 1000 MB<br>
maximum_object_size_in_memory 102400 KB<br>
coredump_dir /var/spool/squid<br>
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0<br>
refresh_pattern deb$ 129600 100% 129600<br>
refresh_pattern udeb$ 129600 100% 129600<br>
refresh_pattern tar.gz$ 129600 100% 129600<br>
refresh_pattern tar.xz$ 129600 100% 129600<br>
refresh_pattern tar.bz2$ 129600 100% 129600<br>
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0
refresh-ims<br>
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims<br>
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims<br>
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0
refresh-ims<br>
refresh_pattern changelogs.ubuntu.com\/.* 0 1% 1</p>
<p><br>
</p>
<p>Thanks!</p>
<p>-Brad</p>
</body>
</html>