当异步连接的数量变得超过7时,泽西就会停滞不前

时间:2015-02-13 22:41:22

标签: java ajax jersey jax-rs jersey-2.0

我在Jersey + Grizzly实施了长枪。为了测试我的问题,我现在只有asyncResponce的资源,即挂起请求。像这样:

@GET
@Produces("application/json")
public void asyncGetWithTimeout(@Suspended final AsyncResponse asyncResponse) {
    asyncResponse.setTimeoutHandler(new TimeoutHandler() {
        @Override
        public void handleTimeout(AsyncResponse response) {
            response.resume(Response.status(Response.Status.SERVICE_UNAVAILABLE)
                    .entity("{\"response\":\"timeout\"}").header("Access-Control-Allow-Origin", "*").build());
        }
    });
    asyncResponse.setTimeout(30, TimeUnit.SECONDS);
}

一切正常,直到暂停请求的数量超过7.然后整个网络应用程序卡住,甚至是常规同步请求。怎么可能,泽西岛只有7个主题?对不起,我在并发和网络应用方面不是很好,只是没想到会出现这种问题。

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。实际上存在客户端问题,并且知道"每个主机名的最大连接数"。此编号是浏览器/应用程序特定的。因此,我在Chrome中测试我的网络应用程序并获得7.正如您从下表中看到的那样,我只是将其误算为1。

每个服务器/代理的默认同时持久连接数:

Firefox 2:  2
Firefox 3+: 6
Opera 9.26: 4
Opera 12:   6
Safari 3:   4
Safari 5:   6
IE 7:       2
IE 8:       6
IE 10:      8
Chrome:     6