通常,rabbitmq服务启动之后,我们可以在web UI界面上看到首页的概览中有一项是关于内存的,这个值很关键,如果我们的服务出现消费迟滞,或者阻塞,那么很可能是这里的问题。
这个地方的值如果超出了默认值high watermark,出现告警, 而且很容易造成消息积压。这里的值是与系统内存挂钩的,默认这个值就是系统内存的0.4,这个0.4的系数是可以设置的。他就是memory_high_watermark。
我这里显示的是728m,因为我使用docker启动rabbitmq,而docker默认是使用虚拟机的内存,虚拟机的内存是1.8G,按照比例1.8*0.4=0.72,差不多728m的样子。
我们可以在启动虚拟机的时候,设置内存限制,然后呢,这个值也会发生变化,如下所示,我将虚拟机内存限制在500m,这个时候,我们再来看这个概览页面。
我们把内存设置小了,默认的high watermark显示如下所示:
500*0.4=200,正好,不多不少。
这里我们验证了,通过设置虚拟机内存可以达到控制high watermark的值。
////////