默认情况下,在哪里使用Akka的默认调度程序?

时间:2019-11-01 00:31:54

标签: scala playframework akka akka-stream

我目前有一个相当大的后端,它是使用Play框架(在后台使用akka HTTP)用Scala编写的,并使用许多参与者来安排任务,维护状态等。

每个小时随机出现“ ish”,我会收到以下消息:

  

安排的心跳发送被延迟。先前的心跳是在[xxxx] ms之前发送的,预期的间隔是[1000] ms。这可能会导致故障检测以将成员标记为不可访问。原因可能是线程饥饿,例如通过在默认调度程序,CPU超载或GC上运行阻止任务。

我正在使用IntelliJ,并在后端搜索我正在使用的任何context.dispatcher位置,这与警告消息所抱怨的默认调度程序相对应。我在任何地方都使用期货,所以我不应该在任何重要的地方使用期货。所有的期货都由专门的ExecutionContext作为后盾,这些{@ {1}}与我自己创建的自定义执行者Play框架执行者(https://www.playframework.com/documentation/2.7.x/ThreadPools#Using-the-default-thread-pool)相对应。

我特别要寻找的地方可能暴露问题所在吗?

我当前的堆栈如下:

  • 使用PostgreSQL可以与数据库进行交互。

  • “播放Redis”-com.github.karelcemus用于Redis缓存。

我希望通过社区的帮助或指导,我可以摆脱这些警告消息!

0 个答案:

没有答案