emqx/apps
Thales Macedo Garitezi 8aa7c014e7 perf(buffer_worker): avoid calling ets:info/2
(Almost?) fixes https://emqx.atlassian.net/browse/EMQX-9637

During the course of performance tests comparing the performance of
e5.0.3 and e4.4.16 regarding the webhook bridge in sync mode, we
observed that the throughput in e5.0.3 (sync) was much lower than in
e4.4.16: ~ 9 k msgs / s vs. ~ 50 k msgs / s, respectively.

Analyzing `observer_cli` output, we noticed that a lot of the time
both buffer workers and ehttpc processes was spent in `ets:info/2`.
That function was called to check the size of the inflight table when
updating metrics and checking if the inflight table was full.  Other
uses of `ets:info/2` were contained inside the arguments to some
`?tp/2` macro usages (https://github.com/kafka4beam/snabbkaffe/pull/60).

By using a specific record to track the size of the table, we managed
to improve the bridge performance to ~ 45 k msgs / s in sync mode.
2023-05-02 17:05:32 -03:00
..
emqx perf(buffer_worker): avoid calling ets:info/2 2023-05-02 17:05:32 -03:00
emqx_authn test: fix authn test cases 2023-05-01 18:42:45 +02:00
emqx_authz fix(authz): ensure acl.conf path template rendered 2023-05-02 09:10:04 +02:00
emqx_auto_subscribe refactor: move emqx_json to emqx_utils_json 2023-04-14 13:31:27 +02:00
emqx_bridge test(bridge): fix bridge map type filed converters 2023-04-30 10:45:11 +02:00
emqx_bridge_kafka fix: stale ref to emqx_json after rebase 2023-04-14 16:30:27 +02:00
emqx_conf refactor: use different terms for config tombstone 2023-05-02 13:24:59 +02:00
emqx_connector fix(webhook): consider {shutdown, closed} return as recoverable 2023-05-02 13:12:03 -03:00
emqx_ctl docs: add readme for emqx_ctl app 2023-03-20 19:35:17 +01:00
emqx_dashboard test(emqx_dashboard): refine spec error 2023-04-30 17:28:41 +02:00
emqx_exhook test: allow inter-test case config dependency for emqx_exhook_SUITE 2023-05-01 20:15:47 +02:00
emqx_gateway fix(gw): load emqx applications before hocon configs checking 2023-04-17 13:56:39 +02:00
emqx_gateway_coap refactor: rename emqx_misc to emqx_utils 2023-04-14 13:41:27 +02:00
emqx_gateway_exproto refactor: rename emqx_map_lib to emqx_utils_maps 2023-04-14 13:41:34 +02:00
emqx_gateway_lwm2m fix: byebye jsx 2023-04-14 13:41:34 +02:00
emqx_gateway_mqttsn refactor: rename emqx_misc to emqx_utils 2023-04-14 13:41:27 +02:00
emqx_gateway_stomp refactor: rename emqx_misc to emqx_utils 2023-04-14 13:41:27 +02:00
emqx_machine refactor: rename emqx_misc to emqx_utils 2023-04-14 13:41:27 +02:00
emqx_management refactor: move shared macros to header file 2023-05-02 13:24:59 +02:00
emqx_modules test(emqx_delayed_SUITE): fix flaky test 2023-05-02 13:24:59 +02:00
emqx_plugin_libs chore: bump apps versions 2023-04-17 09:09:08 +02:00
emqx_plugins refactor: relocate i18n files for apps/emqx 2023-04-03 13:12:24 +02:00
emqx_prometheus chore: apply review suggestions 2023-04-21 15:32:16 +08:00
emqx_psk refactor: relocate i18n files for apps/emqx 2023-04-03 13:12:24 +02:00
emqx_resource perf(buffer_worker): avoid calling ets:info/2 2023-05-02 17:05:32 -03:00
emqx_retainer refactor: rename emqx_map_lib to emqx_utils_maps 2023-04-14 13:41:34 +02:00
emqx_rule_engine refactor: change rule_engine config importance level from hidden to low 2023-04-18 19:17:03 +02:00
emqx_slow_subs Merge pull request #10390 from sstrigler/EMQX-9549-new-emqx-utils-app-to-collect-utility-modules 2023-04-14 20:33:11 +02:00
emqx_statsd test(statsd): fix raw config default value 2023-04-29 22:10:19 +02:00
emqx_utils Merge branch 'EMQX-9549-new-emqx-utils-app-to-collect-utility-modules' of github.com:sstrigler/emqx into EMQX-9549-new-emqx-utils-app-to-collect-utility-modules 2023-04-14 18:53:47 +02:00