You may notice that Varnish works well, but sometimes it completely loses the cache as the child process of Varnish is reloaded. This may be version independent and is accompanied by various errors, such as this one:
Error: Child (65162) died signal=6
Error: Child (65162) Panic at: Fri, 25 Mar 2022 11:18:31 GMT
Assert error in obj_getmethods(), cache/cache_obj.c line 98:
Condition((oc->stobj->stevedore) != NULL) not true.
version = varnish-6.5.2 revision NOGIT, vrt api = 12.0
The content of the error is not important here, the main thing here is that the child process has died. In this case, the cache will naturally be lost:
If you notice this, then you should pay attention to the transparent_hugepage setting on the server. If it is set to always, then this is bad and varnish warns about this in the documentation.
How to check? Login to the server and run the command:
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
You need to set this parameter to transparent_hugepage=madvise. To do this, edit the grub file:
nano /etc/default/grub
Find the parameter there:
GRUB_CMDLINE_LINUX="...
Add a value to it:
transparent_hugepage=madvise
As a result, the parameter will look something like this:
GRUB_CMDLINE_LINUX="resume= ... quiet transparent_hugepage=madvise"
After that run:
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
The above steps set this setting permanently. This will allow Varnish to comply with the requirements and it will work more correctly.