首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“Tomcat”中的许多Akka线程

“Tomcat”中的许多Akka线程
EN

Stack Overflow用户
提问于 2015-09-16 14:12:09
回答 1查看 482关注 0票数 2

我在Tomcat 8中托管我的Scala (2.11) WAR,并使用akka 2.3.+和spray-client 1.3.3。我只对一个演员使用Akka,当Tomcat开始的时候,我会给它打一个电话。它也可以手动调用。

代码语言:javascript
复制
class RefreshDataActor extends Actor with ActorLogging {
    override def receive: Receive = {
        case _ =>
            implicit val timeout: Timeout = someTimeout
            implicit val ec = this.context.dispatcher

            val pipeline = sendReceive ~> unmarshal[Data]

            pipeline(Get(fileUrl))
                .onComplete {
                    case Success(data) =>
                        // Do stuff with the data
                    case Failure(ex) =>
                        this.log.error("Unable to find the latest version of the data!", ex)
                }
    }
}

每当任何调用进入Tomcat时,我都会看到它承载的活动线程数量激增。

箭头指示何时调用服务器。还请注意,CPU也在缓慢上升,并且在某一时刻,机器会非常努力地工作,似乎什么都没有(屏幕中的机器有8个核心)。

通过将VisualVM连接到受此影响的计算机之一,我开始调试这个问题。仍然活着的线程名为default-akka.actor.default-dispatcher-X ( X通常是2到7之间的任意数字),所有这些线程都在等待和default-scheduler-1 (TIMED_WAITING)。有几百个,,还有一个default-akka.io.pinned-dispatcher-5 (可运行的)。

我假设这与Akka的工作方式有关,但我不明白这是为什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-16 14:56:52

发现了问题。我不止一次调用ActorSystem(),它创建了一个新的参与者系统,而不是重用已经创建的系统。这导致越来越多的系统被创建,并且由于某种原因没有被移除。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32611080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档