mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了。这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies 、disc_copies都可能会发生。
如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2
mnesia过载分析
1、抛出警告是在mnesia 增加dump worker的时候
mnesia_controller.erl
抛出警告是当Worker的#dump_log.opt_reply_to 未定义,仔细看这里的代码,这一步先检查了dumper_queue里的worker
所以,mnesia抛出过载警告有2个条件:
1)当worker的#dump_log.opt_reply_to 未定义
2)dumper_queue有相同操作(InitBy)的worker
2、那什么样的worker的#dump_log.opt_reply_to 未定义?