playframework – 如何调整play框架应用程序的可伸缩性?
我正在使用Play framework 2.1开发我的应用程序.这是一个非常易于使用的框架.我能够快速开发我的应用程序.但我也遇到了一些可扩展性问题.似乎Play 2.1的运行速度不如声称的那么快.也许这是因为我不知道调整性能.
我的问题如下:我有一个API用他/她的电子邮件登录用户. 我使用Apache Benchmark(ab)来使用性能.一个请求大约需要230毫秒.当有5个并发请求时,响应时间仍然足够快,大约280ms. Concurrency Level: 5 Time taken for tests: 0.306 seconds Complete requests: 5 Failed requests: 0 Write errors: 0 Total transferred: 3495 bytes Total POSTed: 1065 HTML transferred: 3135 bytes Requests per second: 16.34 [#/sec] (mean) Time per request: 306.009 [ms] (mean) Time per request: 61.202 [ms] (mean,across all concurrent requests) Transfer rate: 11.15 [Kbytes/sec] received 3.40 kb/s sent 14.55 kb/s total Connection Times (ms) min mean[+/-sd] median max Connect: 1 1 0.1 1 1 Processing: 280 290 13.8 292 305 Waiting: 278 288 13.7 291 304 Total: 280 291 13.9 293 306 但是,当我使用100个并发请求时,结果非常糟糕. Concurrency Level: 100 Time taken for tests: 4.243 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 69900 bytes Total POSTed: 21300 HTML transferred: 62700 bytes Requests per second: 23.57 [#/sec] (mean) Time per request: 4243.058 [ms] (mean) Time per request: 42.431 [ms] (mean,across all concurrent requests) Transfer rate: 16.09 [Kbytes/sec] received 4.90 kb/s sent 20.99 kb/s total Connection Times (ms) min mean[+/-sd] median max Connect: 1 62 31.5 83 89 Processing: 996 3744 544.7 3902 4146 Waiting: 995 3727 542.0 3894 4146 Total: 1084 3806 542.6 3968 4204 我的服务器机器:Intel i7,8核,2.8GHz,8GB内存.我使用了play框架的默认设置.谁知道如何调整播放框架的性能? 我认为它与线程池大小有关.该文档称play的默认线程池大小为#core.在这种情况下,处理所有100个请求的预期时间是: 230ms * (100 / 8) = 2875ms 那么,我应该增加默认线程池的大小吗?但该文档称,当池大小等于#core时,我应该获得最佳性能. 另外,netty的(play的web服务器)线程池大小会影响性能吗?我没有找到任何有关其默认值的信息.有谁知道它是如何配置的? 谢谢! 解决方法
Play的默认线程配置专为使用异步API的应用程序而设计.
如果进行大量的阻塞调用(通常是“标准”JDBC数据库调用),则需要调整默认的ThreadPool,或者在另一个专门配置的ThreadPool中执行数据库调用. 要了解所有这些机制,我建议您阅读Play Framework文档的Thread Pools部分.它包含有关此主题的非常有用的信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |