- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个简单的代码:
List<ActorRef> actors = new ArrayList<>();
for (int i = 0; i < ACTOR_COUNT; i++) {
actors.add(system.actorOf(...));
}
for (ActorRef actor : actors) {
system.scheduler().schedule(FiniteDuration.create(0, TimeUnit.MILLISECONDS),
FiniteDuration.create(1000, TimeUnit.MILLISECONDS), actor, "Run", system.dispatcher(), null);
}
它创建了许多参与者,然后为每个参与者创建了一个调度程序。 Actor 本身负责查询 MQ,然后处理一条消息。
当 ACTOR_COUNT > 30 时,一切都很好。但除此之外,我们有内存泄漏(带有消息“Run”的 akka.dispatch.Envelopes 的实例正在填满并且无法被垃圾收集)
这很奇怪,因为当我们有更多的 Actor 时,我们就会有更多的消息(每个 Actor 每秒 1 条)- 但出乎意料的是,当有更多的 Actor /消息时,它会停止填满。
时间间隔(1000 毫秒)并没有真正影响情况,它只是让它变慢或变快。
你能为我解释一下这种行为吗?
谢谢。
更新
这是一个虚拟 Actor ,可以帮助隔离问题。
public class MessageQueueTestActor extends UntypedActor {
private static final Logger log = LoggerFactory.getLogger(MessageQueueTestActor.class);
@Override
public void onReceive(Object message) throws Exception {
Thread.sleep(3000);
}
}
问题在 ACTOR_COUNT = 5 时重现。现在很明显,当 actor sleep 时间 > 调度程序间隔时,信封就会填满。如果我将 sleep 时间从 3000 毫秒减少到 500 毫秒,问题就消失了。
但是如果我将 actor 的数量增加到 30 个(相同的 hibernate 时间 = 3000 毫秒),垃圾收集器也可以使用消息。为什么?看起来 Akka 中的某些东西在那个阈值之后开始以不同的方式工作。
最佳答案
这是一个“调试我的代码”问题,不确定它是否应该在这里,但无论如何我都会回答。
调度程序不会将消息排入 actor 自己的邮箱,它使用给定的调度程序来执行此操作。由于您阻塞了默认调度程序中的线程并使用它来进行排队,因此来自调度程序的消息在某一时刻不再到达邮箱(我假设您的默认调度程序有 30 个线程)。更准确地说:他们一个接一个地到达它,而 Actor 在他们收到的每个回合中最多处理 5 条消息。
所以,没有什么是 GC-ed,你只是在不同的地方(默认调度程序)排队不同的东西(Runnable)。如果处理时间大于滴答周期,您的程序将永远无法持续运行。
关于java - Akka:意外的邮箱填满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39870123/
我试图在两个元素之间放置一个图像,但是当它到达电子邮件客户端时,它不起作用。 是否有可能获得元素的绝对定位或至少用 float 或其他东西模拟它?如果没有,那么...回到基础知识然后(图片) 我有几个
我正在使用 Gmail SMTP 服务器发送来 self 网站用户的电子邮件。 这些是我的 settings.py 中的默认设置 EMAIL_HOST = 'smtp.gmail.com' EMAIL
最近做一个邮箱验证的功能,研究了一会,搞定了邮件的自动发送。下面用qq邮箱作为演示,一步一步来解释: 代码下载地址 首先,就是做到邮件的发送,代码如下: ?
本文实例为大家分享了常用的iOS正则表达式,供大家参考,具体内容如下 ?
我想知道 facebook API 允许 PHP 网页提取以下用户数据的先决条件是什么: 姓名 电子邮件 电话 据我了解,提取电话号码需要您的网站在 facebook/Websense 的白名单中吗?
我的 iOS 应用程序通过 username 和 password 使用 Firebase 登录。但我想提供更改设置中的 username 的可能性。 问题是,Firebase 是否支持更改用户名?
我正在尝试销毁我的 ROR 应用程序中的对象。 但我收到以下错误: ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relati
我正在尝试开发一个应用程序来访问来自邮箱(例如Gmail和Yahoo Mail)的电子邮件,并将其存储在本地存储中。有什么办法可以实现这一目标吗? 最佳答案 当然可以。 您可以使用imap_clien
我需要在 Gmail 中选择“已发送”和“垃圾邮件”文件夹,但我的帐户无法使用。后来我发现这些文件夹是非英语的,但它似乎也不代表那些语言的 unicode 字符。有人知道如何找出 Gmail 帐户的“
看起来这两种IPC机制非常相似,它们之间有什么区别吗? 最佳答案 我认为 MSDN 上对每种机制的介绍都回答了这个问题: Mailslots : A mailslot is a mechanism f
我一直在使用 Apple 的脚本编辑器编写 JXA 脚本。本质上,我想浏览我的收件箱文件夹并将超过 44 天的邮件移动到存档文件夹。我能够找到帐户、我的收件箱和存档“邮箱”,但我终究无法弄清楚如何将该
我正在为我的网站设计一个用户注册表,我们需要支持使用相同的密码通过用户名/电子邮件/手机登录。 用户可以通过用户名、邮箱或手机进行注册,注册后可以绑定(bind)邮箱或手机。 这是我正在考虑的表格,但
我想使用 Zimbra 允许像 myusername+something@mydomain.com 这样的电子邮件,而不是简单的 myusername@mydomain.com - 这是 Gmail
对 Akka Actor 邮箱进行压力测试的最佳方法是什么?我应该关注的测量是什么?我在猜测它的内存和延迟(完成工作需要多长时间)。 通常,在对网站进行负载测试时,我们会检查每秒请求数和每个请求的平均
我正在尝试通过 C# 代码在 Exchange 2010 服务器上创建/启用邮箱。我到处都看到人们使用下面显示的代码。 但是我得到以下错误: 术语“Enable-Mailbox”未被识别为 cmdle
我正在使用 python 包邮箱,我正在尝试提取消息并清理数据。我遇到了一个问题,对于大型数据库,我可以用我的示例文件调用构造函数,但是当我尝试打印任何消息时,我的程序挂起。我认为这是因为我要读取的文
本文实例讲述了Java正则验证电话,手机,邮箱,日期,金额的方法。分享给大家供大家参考,具体如下: ?
我正在使用 编写监控解决方案python3 与 exchangelib 并尝试计算我们团队邮箱中的消息。条件之一:收件人列表必须包含特定的电子邮件地址 . 当我使用 filter()与 author或
我刚刚在 Active Directory 中创建了一个用户。我想为此用户创建一个交换邮箱。我可以只设置一些用户属性吗?像这样: DirectoryEntry user = ...Get the us
我想为每个用户显示正在进行的对话列表。所以他们只需点击它并显示他们想要的对话。我很难找到如何创建此链接,因为邮箱中的对话对象没有 ID。 这个id好像是保存在notification对象中的,所以我尝
我是一名优秀的程序员,十分优秀!