繁体   English   中英

Playframework线程池

[英]Playframework thread pools

我正在使用YourKit对playframework 2.2.3应用程序进行性能分析,以尝试解决一些性能问题。 这不是我的应用程序,也不熟悉Play2。该应用程序是利用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内部线程池-Play在内部使用。 此线程池中的任何线程都不应执行任何应用程序代码,并且此线程池中也不应进行任何阻塞。 可以通过在application.conf中设置internal-threadpool-size来配置其大小,并且默认为可用处理器的数量。

如我所见,涉及应用程序代码的线程中的堆栈跟踪可能是开发人员设计错误,或者仅仅是由于框架的异步特性,即代码实际上只是在这些内部线程中通过执行而执行?

祝一切顺利

乔恩

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM