I've read through the RabbitMQ Production Checklist and we've made some changes to ensure that RabbitMQ pods in our Kubernetes cluster don't crash by setting the memory limits in the deployment to 1.3G and the RabbitMQ vm_memory_high_watermark.absolute to 1024MB, but my problem is understand exactly what happens when we reach the alarm point, and beyond. The docs state:
Before the broker hits the high watermark and blocks publishers, it will attempt to free up memory by instructing queues to page their contents out to disc. Both persistent and transient messages will be paged out
But at the very beginning of the memory document it also states:
It is strongly recommended that OS swap or page files are enabled.
We run our Kubernetes cluster at Google (GKE) and not only do we not have any control over whether the machines get swap configured (they don't), my understand is that Kubernetes is also not setup to use swap anyway. My concern is whether there will be a negative impact to how RabbitMQ pods can write the messages to disk without it. Does anyone have any insight into this?