在 Play 框架中配置最大线程的指南

Posted

技术标签:

【中文标题】在 Play 框架中配置最大线程的指南【英文标题】:Guideline to Configure max threads in Play framework 【发布时间】:2014-05-30 10:14:53 【问题描述】:

我们使用 Playframework 1.x。

我们没有触及线程池大小,我们使用默认值(nb 个处理器 + 1)。我们的生产服务器有 4 个核心处理器,我假设一次有 5 个线程。

为了使用,我们需要一次至少提供 100 个线程。我们可以将线程池​​大小增加到 100,这会产生什么问题吗?

【问题讨论】:

【参考方案1】:

在我的项目中,我们使用大约 30 个线程池来服务大约 100 个并发。 Play 1.x 运行速度非常快,因此可以在下一个请求处理之前释放线程。

但是你应该对你的代码进行负载测试......我认为如果你将线程池增加到 100 是不好的。

顺便说一句,您应该按照 Play 的建议使用异步作业来实现您的应用程序:http://www.playframework.com/documentation/1.2.7/asynchronous

【讨论】:

【参考方案2】:

Play 是围绕尽可能快地处理短请求的想法构建的,因此能够保持线程池尽可能小。想要一个小池的主要原因是保持资源消耗低而不是浪费。

Play and Java can happily run with a higher thread pool,例如 100 或 1000(尽管您的服务器可能并不总是支持它,some Linux distributions for example 对每个用户每个应用程序的线程数有固定限制),但是建议分析您的问题,看看你是否真的需要那个大池。

在大多数情况下,需要一个大池意味着您必须有许多阻塞线程,并且应该研究 Play 的异步功能,或者您有一个尝试同时处理许多事情的操作,当切成更小的线程时性能会更好件。 如果一个请求导致服务器上的长阻塞线程,这通常意味着它也会导致用户端的长阻塞接口。

【讨论】:

以上是关于在 Play 框架中配置最大线程的指南的主要内容,如果未能解决你的问题,请参考以下文章

play框架使用起来(14)-高级指南

play框架使用起来(14)-高级指南

Java Play 框架 - NoClassDefFoundError:播放/配置

为 Play 框架 1.3.0 Web 应用程序配置 MySQL 服务器时遇到问题

Mac版play框架配置

Play框架最快上手!