Play Framework 2.1:play.libs.WS的性能问题

Loi*_*oic 5 performance playframework playframework-2.1

我有一个Play 2.1 Java Web服务,它调用另一个Web服务.我的服务通过转换其他Web服务的XML响应来提供JSON.

最初,我使用Jersey-Client lib来调用我的第二个服务.由于这是一个阻塞调用,我修改了设置以允许并行500个线程.我用它做了很好的结果,我做了一个加特里拉测试并且速度非常快(在一台远程服务器上处理10 000个请求需要32秒).

然后我决定只使用异步调用来优化I/O. 现在我使用play.libs.WS客户端而不是使用默认线程池参数的jersey阻塞客户端.我使用promises来获取我的结果,但我的其余代码与以前完全相同.

奇怪的是,我的加特林测试(只是一个发送一些http GET请求的循环)的性能已经下降,速度慢了10倍......

我试图增加"默认调度程序"的线程数,但并不是更好.

可能是因为单个线程在WS调用之后处理XML和Json转换?

该应用程序的结构如下:

//controller : 
Promise<Response> = myService.remoteEntities();

return async(promise.map(new Function<Response, Result>() {
        public Result apply(Response response) {
          List<Entity> entities = // ... XPATH and DOM parsing
          return ok(jsonp(callback, toJson(entities)));
        }      
});  
Run Code Online (Sandbox Code Playgroud)

myService.remoteEntities定义如下:

public Promise<List<Entity>> myServiceMethod {
 return WS.url(url.toString()) 
}
Run Code Online (Sandbox Code Playgroud)

注意:myService是一个弹簧服务单例,我的路由/控制器使用带有'@'符号的spring我把它放在一个单独的类中,以便能够使用模拟测试

谢谢,Loïc

注意:我最初在此处发布了我的问题:https://groups.google.com/forum/?fromgroups =#!topic/play-frame/SDpPA6UPyFQ