diff --git a/src/emqttd_pubsub_sup.erl b/src/emqttd_pubsub_sup.erl index 686c9884d..c04b486f6 100644 --- a/src/emqttd_pubsub_sup.erl +++ b/src/emqttd_pubsub_sup.erl @@ -47,8 +47,9 @@ init([Env]) -> %% Router Pool Sup RouterMFA = {emqttd_router, start_link, [fun setstats/1, Env]}, + %% Pool_size / 2 - RouterSup = emqttd_pool_sup:spec(router_pool, [router, hash, 1 + (pool_size(Env) div 2), RouterMFA]), + RouterSup = emqttd_pool_sup:spec(router_pool, [router, hash, router_pool(Env), RouterMFA]), %% PubSub Pool Sup PubSubMFA = {emqttd_pubsub, start_link, [fun setstats/1, Env]}, @@ -71,6 +72,12 @@ ensure_tab(Tab, Opts) -> _ -> ok end. +router_pool(Env) -> + case pool_size(Env) div 2 of + 0 -> 1; + I -> I + end. + pool_size(Env) -> Schedulers = erlang:system_info(schedulers), proplists:get_value(pool_size, Env, Schedulers).