为了账号安全,请及时绑定邮箱和手机立即绑定

Play Framework 不能处理超过 12 个并发连接

Play Framework 不能处理超过 12 个并发连接

料青山看我应如是 2021-11-24 18:34:44
我有一个普通的 Play 2.6 应用程序,它不能处理超过 12 个并发连接。它也会影响 Play 2.5。这是一个示例控制器:public class TestController extends Controller {    public Result index() {        try {            Thread.sleep(1000);        } catch (InterruptedException e) {            e.printStackTrace();        }        return ok("");    }}使用 12 个并发连接进行测试:ab -n 12 -c 12 http://localhost:9000/输出:...Concurrency Level:      12Time taken for tests:   1.005 secondsComplete requests:      12...所以所有 12 个并发请求都在 1 秒内响应,这是预期的。使用 13 个并发连接进行测试:ab -n 13 -c 13 http://localhost:9000/输出:...Concurrency Level:      13Time taken for tests:   2.004 secondsComplete requests:      13...现在 13 个并发连接需要 2 秒。这两种情况都经过多次测试并产生了一致的结果。为什么会这样?当然 Play 应该能够处理 12 个以上的并发连接?
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

Play 在其基础上使用非阻塞 IO,它不会为每个请求分配一个线程。因此,当您使用类似 的方法时Thread.sleep,您会阻止 Play 使用该线程来处理其他请求。

在做阻塞 IO 时,文档建议使用专用线程池。您可以在官方文档中阅读更多信息以及如何处理这种情况:https : //www.playframework.com/documentation/2.6.x/ThreadPools#Understanding-Play-thread-pools


查看完整回答
反对 回复 2021-11-24
  • 1 回答
  • 0 关注
  • 217 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信