[rabbitmq-discuss] Important: Windows users of RabbitMQ v1.7.1
Matthew Sackman
matthew at lshift.net
Tue Feb 2 15:04:18 GMT 2010
We would strongly recommend you upgrade the version of Erlang to the
latest: R13B03. The Windows bundle of RabbitMQ includes Erlang version
R12B-5, which contains a bug resulting in incorrect amounts of memory
being reported to Rabbit. This can in some cases, cause Rabbit to
believe there is negative amounts of RAM installed, and thus refuse to
accept any messages at all.
Erlang R13B03 for Windows can be downloaded from
http://www.erlang.org/download/otp_win32_R13B03.exe
After installing, you need to update the environment variable
ERLANG_HOME. To do this:
Click start; right-click on Computer; click Properties; click "Advanced
System Settings"; click "Environment Variables".
In the bottom half of the window, you should have list containing an
entry for ERLANG_HOME. This should be updated so that the final
component is erl5.7.4 (which corresponds to Erlang R13B03). Verify that
the path here is the path where you installed Erlang R13B03.
However, whilst Erlang R13B03 is able to correctly detect the amount of
RAM installed in Windows (in fact, the fix arrived in Erlang R13B), it
does not take into account the fact that Windows commonly does not allow
32-bit applications (which includes Erlang) to use more than 2GB of RAM.
Thus you may still see Rabbit crashing with "unable to allocate memory"
type errors. Thus for Windows users who have more than 2GB RAM
installed, after upgrading to Erlang R13B03, we would recommend you do
the following:
1) calculate the following: X = 820 / total-RAM-in-MB. Eg if you have
4GB installed then X = 820 / 4096 = 0.2. It doesn't have to be super
accurate, just close enough.
2) open a cmd shell:
> cd %APPDATA%\RabbitMQ
> notepad rabbitmq.config
Note the cd may fail if the directory doesn't exist. In that case,
> cd %APPDATA%
> mkdir RabbitMQ
> cd RabbitMQ
> notepad rabbitmq.config
3) into notepad, type:
[{rabbit, [{vm_memory_high_watermark, X}]}].
where X is replaced by the value you calculated in step 1. This assumes
that you don't already have a configuration file for rabbitmq. If you
do, then you need to add the {vm_memory_high_watermark, X} or adjust an
existing entry for vm_memory_high_watermark, again, where X is replaced
by the value you calculated in step 1.
4) save the file in notepad.
5) Restart RabbitMQ.
6) Check rabbit's logs. The location of these are displayed when
rabbit starts up. They should contain an entry like:
=INFO REPORT====30-Feb-2010::15:43:60 ===
Memory limit set to 820MB.
If the limit is way off 820MB then you've either mis-calculated X in
step 1, or you've edited the wrong file.
Notes
-----
a) This issue only affects Rabbit running under Windows
b) It only affects RabbitMQ v1.7.1
c) A fix for this bug will be included in the next release of RabbitMQ
which we expect to release soon.
d) As ever, please let us know of any issues you come across with
Rabbit.
Matthew
More information about the rabbitmq-discuss
mailing list