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
| 归档时间: |
|
| 查看次数: |
552 次 |
| 最近记录: |