diff --git a/apps/efka/src/efka.app.src b/apps/efka/src/efka.app.src index a01d1d0..beb2604 100644 --- a/apps/efka/src/efka.app.src +++ b/apps/efka/src/efka.app.src @@ -15,6 +15,11 @@ inets, ssl, public_key, + + %erts, + %runtime_tools, + %observer, + kernel, stdlib ]}, diff --git a/apps/efka/src/efka_monitor.erl b/apps/efka/src/efka_monitor.erl new file mode 100644 index 0000000..7ed3931 --- /dev/null +++ b/apps/efka/src/efka_monitor.erl @@ -0,0 +1,25 @@ +%%%------------------------------------------------------------------- +%%% @author anlicheng +%%% @copyright (C) 2025, +%%% @doc +%%% +%%% @end +%%% Created : 03. 6月 2025 14:09 +%%%------------------------------------------------------------------- +-module(efka_monitor). +-author("anlicheng"). + +%% API +-export([]). + +%% API +-export([memory_top/1, cpu_top/1, stop/0]). + +memory_top(Interval) when is_integer(Interval) -> + spawn(fun()->etop:start([{output, text}, {interval, Interval}, {lines, 20}, {sort, memory}])end). + +cpu_top(Interval) when is_integer(Interval) -> + spawn(fun()->etop:start([{output, text}, {interval, Interval}, {lines, 20}, {sort, runtime}])end). + +stop() -> + etop:stop(). \ No newline at end of file diff --git a/apps/efka/src/efka_service.erl b/apps/efka/src/efka_service.erl index 6ff2b6f..abf5823 100644 --- a/apps/efka/src/efka_service.erl +++ b/apps/efka/src/efka_service.erl @@ -98,9 +98,6 @@ init([ServiceId]) -> lager:notice("[efka_service] service_id: ~p, not found", [ServiceId]), ignore; {ok, #service{root_dir = RootDir}} -> - %% 尝试更新微服务的配置信息 - try_update_config(ServiceId), - %% 第一次启动,要求必须成功;只有第一次启动成功,后续的重启逻辑才有意义 case efka_manifest:new(RootDir) of {ok, Manifest} -> @@ -290,18 +287,4 @@ trigger_callback(Ref, Callbacks) -> {Fun, NCallbacks} -> catch Fun(), NCallbacks - end. - --spec try_update_config(ServiceId :: binary()) -> no_return(). -try_update_config(ServiceId) when is_binary(ServiceId) -> - case efka_agent:request_service_config(self(), ServiceId) of - {ok, Ref} -> - case efka_agent:await_reply(Ref, 5000) of - {ok, ConfigJson} -> - service_model:set_config(ServiceId, ConfigJson); - {error, Reason} -> - lager:debug("[efka_service] request_config get error: ~p", [Reason]) - end; - {error, Reason} -> - lager:debug("[efka_service] request_config get error: ~p", [Reason]) - end. + end. \ No newline at end of file diff --git a/apps/efka/src/efka_transport.erl b/apps/efka/src/efka_transport.erl index 15ab513..c0641fc 100644 --- a/apps/efka/src/efka_transport.erl +++ b/apps/efka/src/efka_transport.erl @@ -61,11 +61,12 @@ async_call_reply(undefined, PacketId, Response) when is_integer(PacketId), is_bi async_call_reply(Pid, PacketId, Response) when is_pid(Pid), is_integer(PacketId), is_binary(Response) -> gen_server:cast(Pid, {async_call_reply, PacketId, Response}). +%% 关闭的时候不一定能成功,可能关闭的时候;transport进程已经退出了 -spec stop(Pid :: pid() | undefined) -> ok. stop(undefined) -> ok; stop(Pid) when is_pid(Pid) -> - gen_server:stop(Pid, normal, 2000). + catch gen_server:stop(Pid, normal, 2000). %% @doc Spawns the server and registers the local name (unique) -spec(start_monitor(ParentPid :: pid(), Host :: string(), Port :: integer()) -> diff --git a/config/vm.args b/config/vm.args index 7fe8e1c..33441c1 100644 --- a/config/vm.args +++ b/config/vm.args @@ -1,6 +1,7 @@ -name efka -setcookie efka_cookie +-kernel start_group false -mnesia dir '"/usr/local/var/mnesia/efka"' -mnesia dump_log_write_threshold 5000