2017-05-03 2 views
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個のテーブルがあり、全体のサイズは<です。Mnesia RPC呼び出しが長すぎます

作業が終了すると、ワーカーはクラスタに参加します。

マスターノードが正常に動作しており、記憶が上がっています。

+0

マスタテーブルに4つのノードを一度に接続しようとしています –

答えて

1

最後に問題を解決することができました。問題は、負荷に応じて労働者のEC2に関する自動スケーリングポリシーに従うことでした。ある期間(1年以上)にわたって、私たちは多くのそのような作業者が出入りしていました。そのため、マスターテーブルextra_db_nodesが大幅に拡張されました。

マスターを再起動すると問題が解決しました。

関連する問題