diff --git a/apps/dns_proxy/src/dns_resolver.erl b/apps/dns_proxy/src/dns_resolver.erl index fcdb442..bd87371 100644 --- a/apps/dns_proxy/src/dns_resolver.erl +++ b/apps/dns_proxy/src/dns_resolver.erl @@ -13,7 +13,7 @@ -behaviour(gen_server). %% API --export([start_link/0]). +-export([start_link/1]). %% gen_server callbacks -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). @@ -35,10 +35,10 @@ forward(Pid, ReceiverPid, Ref, TargetIp, TargetPort, Request) -> gen_server:cast(Pid, {forward, ReceiverPid, Ref, TargetIp, TargetPort, Request}). %% @doc Spawns the server and registers the local name (unique) --spec(start_link() -> +-spec(start_link(Args :: list()) -> {ok, Pid :: pid()} | ignore | {error, Reason :: term()}). -start_link() -> - gen_server:start_link({local, ?SERVER}, ?MODULE, [], []). +start_link(Args) when is_list(Args) -> + gen_server:start_link(?MODULE, [], []). %%%=================================================================== %%% gen_server callbacks @@ -52,8 +52,7 @@ start_link() -> init([]) -> {ok, Sock} = gen_udp:open(0, [binary, {active, true}]), %% 通过ets来保存映射关系 - Table = list_to_atom("udp_ets:" ++ erlang:unique_integer([monotonic, positive])), - Tid = ets:new(Table, [set, {read_concurrency, true}, {write_concurrency, true}, private]), + Tid = ets:new(random_table(), [set, {read_concurrency, true}, {write_concurrency, true}, private]), {ok, #state{socket = Sock, tid = Tid}}. @@ -128,3 +127,6 @@ code_change(_OldVsn, State = #state{}, _Extra) -> %%%=================================================================== %%% Internal functions %%%=================================================================== + +random_table() -> + list_to_atom("udp_ets:" ++ integer_to_list(erlang:unique_integer([monotonic, positive]))). \ No newline at end of file diff --git a/config/sys.config b/config/sys.config index 20685e4..6b8e9fc 100644 --- a/config/sys.config +++ b/config/sys.config @@ -8,8 +8,8 @@ ]}, {dns_resolver_pool, [ - {size, 200}, - {max_overflow, 1000}, + {size, 20}, + {max_overflow, 100}, {worker_module, dns_resolver} ]}