Как контролировать нагрузку на mnesia?

Иногда я получаю сообщение об ошибке mnesia overloaded при использовании в основном async_dirty запросов и ram_copies таблиц. Поэтому, чтобы понять, что происходит, я хочу получить больше информации о состоянии mnesia, таком как количество запросов в секунду или размер очереди запросов. Я много искал и нашел два возможных подхода.

Первая функция mnesia:system_info, которая может возвращать список текущих транзакций. Но, похоже, он не может предоставить информацию о транзакциях без транзакций.

Вторая подписка на события mnesia, но при этом требуется активная фоновая обработка, а также ручная подписка на каждое событие таблицы.

Есть ли лучшие способы получить эту информацию?

Ответы

Ответ 1

Я знаю, что это не самый прямой ответ, и я не так хорошо знаком с кодом, как и четыре года назад, но однажды у меня был тот же вопрос, и я сделал приложение erlang, которое контролирует статистику записи mnesia. График пропускной способности SVG:

Графы Mnesia

Если это то, что вам нужно, тесты выполняют функциональные возможности: https://github.com/woahdae/mnesia_graphs/blob/master/test/mnesia_graphs_srv_tests.erl

Если это действительно то, что вы хотите, я мог бы взглянуть на проект еще раз. Я снова работаю в Erlang, поэтому это хорошее упражнение.

Кроме того, еще одно напоминание о том, кто хороший README для себя: четыре года спустя!

Ответ 2

По умолчанию он ограничивается 4.
Вы должны изменить dc_dump_limit от 4 до 50 или что-то еще.  Чем это будет работать для вас.

Ответ 3

До 16 Эрланг 1> appmon:start(). После того, как вам нужно будет использовать 1> observer:start(). Для всех времен вам нужно 32bit WxWidget