gpt4 book ai didi

Erlang/OTP 框架的 error_logger 在相当高的负载下挂起

转载 作者:行者123 更新时间:2023-12-02 06:52:11 25 4
gpt4 key购买 nike

我的应用程序基本上是一个基于内容的路由器,它将路由 MMS 事件。

我使用的记录器是SASL模式下OTP框架附带的记录器“error_logger

问题是::

我正在使用客户端生成具有默认值的彩信事件。该客户端(Java)能够在多个线程

中发送高负载事件

我正在 10 个线程中发送 100 个事件(每个线程发送 10 个 MMS 事件)到用 Erlang/OTP 编写的路由器。

问题是,当我的路由器收到如此高的负载时,我的记录器挂起,即它停止更新我的日志文件。但路由器仍然能够路由事件。

我得出的结论是::

  1. 当接收到如此高负载的事件时,Erlang 中的调度问题(每个事件都有一个单独的进程)。

  2. 极不可能出现的死锁状态。

  3. 可能是由于在多个线程中发送事件而不是按顺序发送事件。但我猜想一个路由器会连接到多个服务提供商盒子,所以我想到了在线程中发送事件。

有人可以帮助 mw 揭开这个问题的神秘面纱吗?

最佳答案

您已经有了一个很好的答案,但我会添加到讨论中。

error_logger 默认使用缓存的磁盘写入操作。因此一种可能性是,在低负载下您并没有真正注意到这一点,但在高负载下您的写入会在缓存中卡住一段时间。

旁注:多个线程调用 Erlang 应该没有问题。

测试此功能的另一种方法是将您自己的记录器添加到 error_logger,然后看看会发生什么。可能打印到 shell 或其他“快速”的东西。

关于Erlang/OTP 框架的 error_logger 在相当高的负载下挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3594977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com