【问题标题】:How to scale out Erlang application to utilize system resource efficiently?如何横向扩展 Erlang 应用程序以有效利用系统资源?
【发布时间】:2018-09-20 18:11:11
【问题描述】:

我正在制作一个有很多用户的应用程序。

但是,我遇到了“向外扩展以利用耗尽的系统资源”的问题。我希望你明白我所说的引号中的那部分是什么意思。如果没有,也许我以后可以澄清一下。

该应用程序支持每秒大约 50k 消息的 SCTP 流量。

我正在使用 10 名主管,其中有很多流程都在作为工作人员。

一些分发器用于将 SCTP 消息传递给通过进程 id 获取的工作人员。

分销商运作良好,没有延迟,没有任何消息。

工人必须做一些任务,所以我可以看到分发者的消息队列长度增加了。

但是,工人和主管都在“坚持下去”。 :S

我可以通过 Observer 捕获这种情况,所有调度程序线程都处于忙碌状态(红色 100%)(我使用的是 32 核和 64 GB RAM 的芯片组)。

同时,CPU 负载和 RAM 消耗并不高(使用 htop 命令)。

那么你能告诉我如何打开这个应用程序以利用几乎系统资源吗?

OTP 18 中似乎存在一些瓶颈?

感谢和问候, 杜克。

【问题讨论】:

  • 也许监督树图将有助于解释问题。根据目前的描述,至少对我来说,很难理解你的情况。

标签: erlang


【解决方案1】:

感谢您抽出宝贵时间查看这篇文章。明白了!我发现了问题。它属于 Mnesia 读/写性能(我没有提到我正在使用 Mnesia 进行数据库管理)。我阅读了许多讨论 Mnesia 性能的线程。以我的经验,可以说:带片段的 Mnesia 会给我们带来最好的性能,远远超过 mnesia:ets 或 mnesia:async_dirty。

干杯, 杜克

【讨论】:

  • 你能写更多吗?这很有趣。
猜你喜欢
  • 2013-12-27
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 2013-12-31
  • 2017-11-21
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多