我们使用Playframework 1.x。
我们还没有触及线程池大小,我们使用默认值(nb处理器+ 1)。我们的生产服务器有4个核心处理器,我一次假设5个线程。
使用时,我们需要一次至少提供100个线程。我们可以将线程池大小增加到100,它会出现任何问题吗?
答案 0 :(得分:2)
在我的项目中,我们使用大约30个线程池来服务大约100个并发。 Play 1.x的运行速度非常快,因此可以在下一个处理请求之前释放线程。
但你应该对你的代码进行负载测试...我认为如果你将线程池增加到100就不好了。
顺便说一句,您应该使用异步作业来实现您的应用程序,建议使用Play:http://www.playframework.com/documentation/1.2.7/asynchronous
答案 1 :(得分:0)
Play是围绕尽可能快地处理短请求的想法构建的,因此能够使线程池尽可能小。想要一个小池的主要原因是保持资源消耗低而不是浪费。
Play and Java can happily run with a higher thread pool,如100或1000(虽然您的服务器可能并不总是支持它,some Linux distributions for example每个应用程序的每个应用程序的线程数有固定限制),但它是建议分析你的问题,看看你是否真的需要那个大池。
在大多数情况下,需要一个大池意味着你必须有许多阻塞线程,并且应该查看Play的异步功能,或者你有一个动作试图同时对很多东西做什么,当切成更小的时候会更好件。 如果请求导致服务器上存在长阻塞线程,这通常意味着它还会导致用户端的长接入阻塞。