Warmup du cache Varnish

Warmup votre cache peut être indispensable afin d’éviter un léger pic de charge inutile lorsque vous dirigez du trafic sur une instance fraichement spawn.

La première solution se base sur le sitemap de votre site. Simple, probablement Quick & Dirty, mais efficace :

#!/usr/bin/env bash

while test -n "$1"; do
  case $1 in
    --sitemap|-s)
      sitemap=$2
      shift
      ;;
    --http_verb|-h)
      http_verb=$2
      shift
      ;;
    *)
      echo "Unknown argument: $1"
      exit 3
      ;;
  esac
  shift
done

tmpfile=$(mktemp /tmp/$(basename $0).XXXXXX)
sitemap=${sitemap:='http://myawesometenmillionsvisitorsmediawebsite.tld/sitemap.xml'}
http_verb=${http_verb:='GET'}

curl --silent $sitemap | grep \<loc\> | sed 's/.*<loc>//' | sed 's|</loc>||' \
  >> $tmpfile

cat $tmpfile | xargs -I % -n 1 -P 16 curl -X$http_verb %
rm $tmpfile

À noter que vous pouvez également vous en servir pour PURGE le cache en modifiant le verbe HTTP.

La seconde méthode consiste à utiliser varnishreplay :

ssh www.varnish-cache.org varnishlog -w - | varnishreplay -a localhost:6081 -r -

Généralement j’utilise la première méthode tout en ajustant le trafic en adaptant le poids de ces nouvelles instances.