如何监测Mnesia负载?

14

我在主要使用async_dirty查询和ram_copies表时,有时会收到mnesia overloaded错误消息。为了了解发生了什么,我想获得有关mnesia状态的更多信息,例如每秒查询次数或查询队列的大小。我进行了大量搜索,并找到了两种可能的方法。

第一种方法是使用mnesia:system_info函数,该函数可以返回当前交易的列表,但似乎无法提供关于非事务性查询的信息。

第二种方法是订阅mnesia事件,但是这样需要一些活动后台处理以及手动订阅每个表事件。

是否有更好的方法获取此信息?


1
你能更具体地说明你想要什么样的信息吗?这并不是完全清楚的。 - I GIVE CRAP ANSWERS
@IGIVECRAPANSWERS,有关查询执行速率的任何信息。它可以是上一秒钟内执行的基本读/写操作的数量。也可以是排队但未完成的基本读/写操作的数量。 - citxx
3个回答

1
我知道这不是最直接的答案,而且我对代码的熟悉程度不如四年前,但我曾经有过同样的问题,并制作了一个监控mnesia写入统计信息并提供吞吐量的SVG图形的erlang应用程序: Mnesia Graphs 如果这是你想要的东西,测试将会检验功能: https://github.com/woahdae/mnesia_graphs/blob/master/test/mnesia_graphs_srv_tests.erl 如果这是你真正想要的,我可以再次查看该项目。我再次使用Erlang工作,所以这是一个好的练习。
此外,再次提醒一个好的README是为了谁:自己,四年后!

好的。看起来没有办法避免主动监控。感谢您的回答。我会查看您的代码。 - citxx

0

默认情况下,它限制为4。
您需要将dc_dump_limit从4更改为50或其他数字。 然后它就能为您工作了。


dc_dump_limit 控制着从内存中转储 disc_copies 表的频率。在我的情况下,它没有帮助,因为我没有 disc_copies 表。无论如何,问题是如何测量导致过载的这种“负载”。 - citxx
-mnesia dc_dump_limit 数量以及(日志)>(filesize(Tab)/Dc_dump_limit)这是一个配置参数。 - user3094069

0

在使用 16 Erlang 之前 1> appmon:start(). 然后你需要使用 1> observer:start(). 每次都需要使用 32 位的 WxWidget

过去两年中,我们一直在使用 Folsomite Erlang 事件捕获 并且为了触发和可视化捕获的事件和指标,我们正在使用 IcingaGraphite


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接