0
start(_Type, _Args) ->
case application:get_env(ebid, join_schema) of
undefined ->
mnesia:create_schema([node()]),
mnesia:start(),
initialize_tables(),
mnesia:wait_for_tables([<<set of tables>>], timer:minutes(5));
{ok, Node} ->
pong = net_adm:ping(Node),
join_schema(Node),
mnesia:wait_for_tables([<<set of tables>>], timer:minutes(5))
end,
join_schema(Node) ->
case rpc:call('[email protected]', mnesia, change_config, [extra_db_nodes, [node()]]) of
{ok, _Result} ->
lists:foreach(fun(Tab) -> io:format("~p : ~p ~n",[Tab,timer:tc(mnesia,add_table_copy,[Tab, node(), ram_copies])]) end, mnesia:system_info(tables));
{error, Reason} ->
mnesia:stop(),
mnesia:del_table_copy(schema, node()),
error_logger:error_msg("Failed to join schema: ~p~n", [Reason]),
error(Reason)
end.
join_schema가 매우 오랜 시간이 걸리는 이유를 디버깅하는 방법이 있습니까? "테이블 세트"대신에 총 10 개의 테이블이 있고 또한 전체 크기는 <입니다. 400MBMnesia RPC 호출 시간이 너무 오래 걸림
작업자가 join_schema를 완료 한 후에 만 작업자가 클러스터에 참가합니다.
마스터 노드가 정상적으로 작동하고 현재 상태가 양호합니다.
마스터 테이블에 동시에 연결되는 4 개의 노드를 한꺼번에 시작하려고합니다. –