[play-framework:2.1.2-java:线程池配置和AsyncResult

时间:2014-01-27 06:56:00

标签: playframework-2.1

我们有一个典型的Web服务,它提供从远程数据库读取的JSON数据。我正在尝试返回Result和AsyncResult,每个都有以下配置:

play {
   akka {
     event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
     loglevel = WARNING
     actor {
       default-dispatcher = {
         fork-join-executor {
           parallelism-factor = 1.0
           parallelism-max = 1
         }
       }
     }
   }
 }

和一个

   parallelism-factor = 1.0
   parallelism-max = 5

以下是给出完成500个请求所花费的时间(平均5个读数)的观察结果:

1. parallelism-max=1 and parallelism-factor=1.0
   Result :
   Completion time = 291662 ms.
   AsyncResult:
   Completion time = 55601 ms

2. parallelism-max=5 and parallelism-factor=1.0
   Result :
   Completion time = 46419 ms.
   AsyncResult:
   Completion time = 46977 ms

我们可以看到,使用parallelism-max = 1,与Result相比,AsyncResult显然花费的时间更少。但是,对于parallelism-max = 5,Result和AsyncResult给出了非常相似的时序。 AsyncResult也不应该随着线程数量的增加而减少所需的时间吗? 请求帮助以了解这一观察背后的原因。

0 个答案:

没有答案