Как контролировать нагрузку на 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