Playframework线程池

时间:2014-07-18 08:33:17

标签: java multithreading playframework playframework-2.2 yourkit

我正在使用YourKit对playframework 2.2.3应用程序进行概要分析,以尝试解决一些性能问题。这不是我的应用程序,我不熟悉游戏2.该应用程序是一个利用Web套接字的多玩家社交游戏。它在Amazon EC2 m3.large上运行

我在分析器中看到的是游戏播放逻辑(由Web套接字调用开始)在play-internal-execution-context中的2个线程中的1个中执行。一些例程涉及I / O,并且由于部分中的方法同步而导致一些阻塞。有一个名为play-internal-execution-context的线程池,但只有两个在任何时候都在使用。活动不时被移动到新线程,我现在可以看到正在使用的线程名称是play-internal-execution-context-600和601。

我可以在播放文档中看到

  

播放内部线程池 - 这由Play内部使用。此线程池中的线程不应执行任何应用程序代码,并且不应在此线程池中执行任何阻止。可以通过在application.conf中设置internal-threadpool-size来配置它的大小,它默认为可用处理器的数量。

正如我所看到的,涉及应用程序代码的线程中的堆栈跟踪可能是开发人员设计不正确,或者,这仅仅是因为框架的异步性质,代码实际上只是通过播放来执行这些内部线程?

一切顺利

乔恩

1 个答案:

答案 0 :(得分:0)

请确保您没有在WebSocket的onReady回调方法中运行阻止代码。任何阻塞或繁重的计算都应该被卸载到其他一些线程池(使用promise或actor)。