Using varnish is quite simple, but configure and interpret varnish needs some time to understand. This section gives you the most important sources and commands to understand varnish better.

Varnish VCL

Varnish VCL is the most important part of varnish. In this file you can define the behaviour of varnish. For example what and how long a request gets cached. In the sources section are some links to get more familiar with a varnish VCL.


Watch and Interpret Varnish Metrics

If you want to check the health of varnish, you will use the tool varnishstat. There is a huge amount of metrics. The most important metrics can be viewed with this command docker exec -t <container-name> /usr/bin/varnishstat -f MAIN.sess_conn -f MAIN.client_req -f MAIN.sess_dropped -f MAIN.cache_hit -f MAIN.cache_miss -f MAIN.cache_hitpass -f MAIN.n_lru_nuked -f MAIN.n_expired -f MAIN.thread_queue_len -f MAIN.backend_conn -f MAIN.backend_fail -f MAIN.backend_unhealthy -f MAIN.backend_busy -f MAIN.backend_req -f SMA.s0.g_bytes -f SMA.s0.g_space

Client Metrics

Key Value
sess_conn Cumulative number of accepted client connections by Varnish Cache
client_req Cumulative number of received client requests. Increments after a request is received, but before Varnish responds
sess_dropped Number of connections dropped due to a full queue

Cache Performance

Key Value
cache_hit Cumulative number of times a file was served from Varnish’s cache
cache_miss Cumulative number of times a file was requested but was not in the cache, and was therefore requested from the backend
cache_hitpass Cumulative number of hits for a “pass” file
n_lru_nuked Least Recently Used Nuked Objects: Cumulative number of cached objects that Varnish has evicted from the cache because of a lack of space
n_expired Cumulative number of expired objects for example due to TTL

Thread Related Metrics

Key Value
thread_queue_len Current queue length: number of requests waiting on worker thread to become available

Backend Metrics

Key Value
backend_conn Cumulative number of successful TCP connections to the backend
backend_fail Cumulative number of failed connections to the backend. Should be 0 or near 0
backend_unhealthy Cumulative number of backend connections which were not attempted because the backend has been marked as unhealthy
backend_busy Cumulative number of times the maximum amount of connections to the backend has been reached.
backend_req Number of requests to the backend
SMA.s0.g_bytes Bytes of cache used
SMA.s0.g_space Bytes of cache left