4

我刚刚安装了 Erlang 和 RabbitMQ。

.\rabbitmqctl.bat 状态

[...] {disk_free_limit,1000000000}, {disk_free,2010} [...]

为什么会有2010?我在这个驱动器上有 143GB 的可用空间。因此,我在 RabbitMQ 日志中出现以下错误:

=INFO REPORT==== 17-Jun-2013::17:11:09 === 磁盘可用限制设置为 1000MB

=INFO REPORT==== 17-Jun-2013::17:11:09 === 磁盘可用空间不足。可用字节数:2010 限制:1000000000

=警告报告==== 2013 年 6 月 17 日::17:11:09 === 节点“rabbit@USER-PC”上设置了磁盘资源限制警报。


* 发布者将被阻止,直到此警报清除 *


我怎样才能手动更改它?我正在使用 Windows 7。

4

1 回答 1

3

我有同样的问题,我似乎已经找到了根本原因。

Rabbit 使用os:cmd("dir /-C /W \"" ++ Dir ++ [$]") 这里来运行 dir 并获取磁盘驱动器上的可用空间。

但是...我安装了 Clink ( http://code.google.com/p/clink ),它包装了 cmd.exe。

Rabbit 对 cmd 输出的解析相当幼稚,并且依赖于最后一行的可用磁盘空间:

parse_free_win32(CommandResult) ->
   LastLine = lists:last(string:tokens(CommandResult, "\r\n")),
   {match, [Free]} = re:run(lists:reverse(LastLine), "(\\d+)",
                            [{capture, all_but_first, list}]),
   list_to_integer(lists:reverse(Free)).

在我的机器上运行os:cmd("dir /-C /W \"" ++ Dir ++ [$"])erl 中的命令会将许可证文本附加到命令输出的末尾(由于 Clink),并且解析代码采用版权声明中的最后一年,而不是实际可用的磁盘空间。

我猜你安装了类似的东西,这也会影响调用命令的结果。在 erlang 提示符下运行Result = os:cmd("dir /-C /W <your dir>").应该会给你一个好主意。

于 2013-07-30T10:35:51.120 回答