Explorar o código

Tune and optimize the Erlang VM (#3195)

Feng Lee %!s(int64=6) %!d(string=hai) anos
pai
achega
3ae3d8a40d
Modificáronse 3 ficheiros con 14 adicións e 18 borrados
  1. 6 6
      etc/emqx.conf
  2. 6 5
      etc/vm.args
  3. 2 7
      priv/emqx.schema

+ 6 - 6
etc/emqx.conf

@@ -221,7 +221,7 @@ node.data_dir = {{ platform_data_dir }}
 ## Value: Number [1024-134217727]
 ##
 ## vm.args: +P Number
-node.process_limit = 2048000
+## node.process_limit = 2048000
 
 ## Sets the maximum number of simultaneously existing ports for this system.
 ##
@@ -230,7 +230,7 @@ node.process_limit = 2048000
 ## Value: Number [1024-134217727]
 ##
 ## vm.args: +Q Number
-node.max_ports = 1024000
+## node.max_ports = 1024000
 
 ## Set the distribution buffer busy limit (dist_buf_busy_limit).
 ##
@@ -239,7 +239,7 @@ node.max_ports = 1024000
 ## Value: Number [1KB-2GB]
 ##
 ## vm.args: +zdbbl size
-node.dist_buffer_size = 8MB
+## node.dist_buffer_size = 8MB
 
 ## Sets the maximum number of ETS tables. Note that mnesia and SSL will
 ## create temporary ETS tables.
@@ -247,7 +247,7 @@ node.dist_buffer_size = 8MB
 ## Value: Number
 ##
 ## vm.args: +e Number
-node.max_ets_tables = 256000
+## node.max_ets_tables = 256000
 
 ## Global GC Interval.
 ##
@@ -266,7 +266,7 @@ node.global_gc_interval = 15m
 ## Value: Number [0-65535]
 ##
 ## vm.args: -env ERL_FULLSWEEP_AFTER Number
-node.fullsweep_after = 1000
+## node.fullsweep_after = 1000
 
 ## Crash dump log file.
 ##
@@ -289,7 +289,7 @@ node.crash_dump = {{ platform_log_dir }}/crash.dump
 ## Value: Number
 ##
 ## vm.args: -kernel net_ticktime Number
-node.dist_net_ticktime = 60
+## node.dist_net_ticktime = 120
 
 ## Sets the port range for the listener socket of a distributed Erlang node.
 ## Note that if there are firewalls between clustered nodes, this port segment

+ 6 - 5
etc/vm.args

@@ -10,13 +10,13 @@
 ## such as `node.name` for `-name` and `node.cooke` for `-setcookie`.
 
 ## Sets the maximum number of simultaneously existing processes for this system.
-#+P 2048000
++P 2048000
 
 ## Sets the maximum number of simultaneously existing ports for this system.
-#+Q 1024000
++Q 1024000
 
 ## Sets the maximum number of ETS tables
-#+e 256000
++e 256000
 
 ## Sets the maximum number of atoms the virtual machine can handle.
 #+t 1048576
@@ -26,7 +26,7 @@
 
 ## Set how many times generational garbages collections can be done without
 ## forcing a fullsweep collection.
-#-env ERL_FULLSWEEP_AFTER 1000
+-env ERL_FULLSWEEP_AFTER 1000
 
 ## Heartbeat management; auto-restarts VM if it dies or becomes unresponsive
 ## (Disabled by default..use with caution!)
@@ -43,7 +43,7 @@
 ## Specifies the net_kernel tick time in seconds.
 ## This is the approximate time a connected node may be unresponsive until
 ## it is considered down and thereby disconnected.
-#-kernel net_ticktime 60
+-kernel net_ticktime 120
 
 ## Sets the distribution buffer busy limit (dist_buf_busy_limit).
 #+zdbbl 8192
@@ -98,3 +98,4 @@
 ## Specifies how long time (in milliseconds) to spend shutting down the system.
 ## See: http://erlang.org/doc/man/erl.html
 #-shutdown_time 15000
+

+ 2 - 7
priv/emqx.schema

@@ -242,16 +242,12 @@ end}.
 %% @doc Erlang Process Limit
 {mapping, "node.process_limit", "vm_args.+P", [
   {datatype, integer},
-  {default, 256000},
   hidden
 ]}.
 
-%% Note: OTP R15 and earlier uses -env ERL_MAX_PORTS, R16+ uses +Q
-%% @doc The number of concurrent ports/sockets
+%% @doc The maximum number of concurrent ports/sockets.
 %% Valid range is 1024-134217727
-{mapping, "node.max_ports",
-  cuttlefish:otp("R16", "vm_args.+Q", "vm_args.-env ERL_MAX_PORTS"), [
-  {default, 262144},
+{mapping, "node.max_ports", "vm_args.+Q", [
   {datatype, integer},
   {validators, ["range4ports"]}
 ]}.
@@ -319,7 +315,6 @@ end}.
 
 %% @doc http://www.erlang.org/doc/man/kernel_app.html#net_ticktime
 {mapping, "node.dist_net_ticktime", "vm_args.-kernel net_ticktime", [
-  {commented, 60},
   {datatype, integer},
   hidden
 ]}.