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

Performance Play Framework 2.1:Play.libs.WS的性能问题,performance,playframework,playframework-2.1,Performance,Playframework,Playframework 2.1,我有一个Play2.1JavaWebService,它调用另一个webservice。 我的服务通过转换其他Web服务的XML响应来提供JSON 最初,我使用Jersey客户端库调用我的第二个服务。 因为这是一个阻塞调用,所以我修改了设置,允许并行中有500个线程。 我的测试结果很好,我做了一个gatling测试,速度非常快(在远程服务器上处理10000个请求需要32秒) 然后我决定只使用异步调用来优化I/O。 现在,我使用play.libs.WS客户端,而不是带有默认线程池参数的jersey阻

我有一个Play2.1JavaWebService,它调用另一个webservice。 我的服务通过转换其他Web服务的XML响应来提供JSON

最初,我使用Jersey客户端库调用我的第二个服务。 因为这是一个阻塞调用,所以我修改了设置,允许并行中有500个线程。 我的测试结果很好,我做了一个gatling测试,速度非常快(在远程服务器上处理10000个请求需要32秒)

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

奇怪的是,我的gatling测试(只是一个发送一些httpget请求的循环)的性能下降了,速度慢了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)));
        }      
});  
//控制器:
Promise=myService.remoteEntities();
返回async(promise.map(新函数(){
公开结果应用(响应){
列出实体=/…XPATH和DOM解析
返回ok(jsonp(回调,toJson(实体));
}      
});  
myService.remoteEntities的定义如下:

public Promise<List<Entity>> myServiceMethod {
 return WS.url(url.toString()) 
}
公共承诺myServiceMethod{
返回WS.url(url.toString())
}
注意:myService是一个spring服务单例,我的路由/控制器使用带有“@”符号的spring 我把它放在一个单独的类中,以便能够在测试中使用mock

谢谢, 洛伊奇

注意:我最初在这里发布了我的问题: