在使用Httpclient的过程中,线上的酒店出现过一个问题,就是当访问量增大的时候,会发现本地的连接等待时间急剧增加,例如从400ms增加到
78000ms,之前一直以为是航信系统问题,后面经过检查才发现,原来是本地httpclient设置时,最大连接数采用了默认设置的原因,而默认的最
大连接数只有2个,所以当有大量连接需要建立时,大多数连接只有等待。后面将连接数设置修改成32个之后,这个响应时间就基本上很少出现很大的时候。
HttpConnectionManager httpConnectionManager = new MultiThreadedHttpConnectionManager();
HttpConnectionManagerParams params = httpConnectionManager.getParams();
params.setConnectionTimeout(5000);
params.setSoTimeout(20000);
params.setDefaultMaxConnectionsPerHost(32);//very important!!
params.setMaxTotalConnections(256);//very important!!
this.client = new HttpClient(httpConnectionManager);
// 设置编码
this.client.getParams().setContentCharset(CharsetHelper.GBK);
this.client.getParams().setHttpElementCharset(CharsetHelper.GBK);
我们一般很容易注意到设置超时时间,例如这里的红色部分,但是极有可能忘记设置每个主机的最大连接数(绿色),因此大家注意一下,本来是最简单的,但也最容易被忽略。
分享到:
相关推荐
同时,注意设置合理的连接超时、读取超时等参数,以应对网络延迟或服务器响应慢的情况。 至于"Grabticket"这个场景,可能是模拟抢票应用,这时可能需要在短时间内发送大量POST请求到服务器,以尝试获取稀缺资源。在...
可以通过设置连接超时、读写超时、最大连接数、连接复用策略等来优化HttpClient的性能。 10. **异步操作**: HttpClient也支持异步操作,通过`HttpAsyncClient`类,可以在回调函数中处理响应,适合于高并发场景。...
这个压缩包“Java获取MQ连接数的Demo.zip”提供了一个简单的Java示例,用于展示如何通过编程方式获取RabbitMQ服务器的连接数。以下是对这个Demo的详细解释: 首先,为了与RabbitMQ交互,我们需要引入RabbitMQ的Java...
- 对于高并发场景,应适当调整连接池参数,如最大连接数、超时时间等。 HttpClient 4.5.5 作为一个成熟的 HTTP 客户端库,不仅提供了丰富的功能,还具有良好的可扩展性和灵活性。开发者可以根据具体需求对其进行...
通过配置最大连接数、每个路由的最大连接数以及连接超时等参数,可以有效控制资源使用。 4. **异步编程支持** HttpClient 4.5提供了`AsyncHttpClient`类,支持异步操作。异步请求返回`Future<HttpResponse>`对象,...
连接管理器可以设置超时、重试策略、最大连接数等参数。 3. **身份验证**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证、NTLM、Kerberos等,能够处理跨域和多层代理的认证问题。 4. **Cookie管理**:...
// 将每路由最大连接数设为20 CloseableHttpClient httpClient = HttpClients.custom() .setConnectionManager(cm) .build(); ``` **2.3 通过API配置超时** 在HttpClient 4.3及更高版本中,可以使用更高级的API...
- **连接参数**: 连接参数用于控制连接的行为,如最大连接数、连接超时时间等。 **2.2 持久连接** - **持久连接**: HTTP/1.1默认使用持久连接,这意味着在一个TCP连接上可以发送多个请求。 **2.3 HTTP连接路由** ...
// 每个路由的最大连接数 CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(connectionManager).build(); ``` 6. **重试策略** HttpClient还提供了重试机制,当请求失败时自动重试...
它允许设置连接池大小,控制并发连接数,以及配置超时参数,以优化网络通信。 3. **多部分文件上传**:在处理POST或PUT请求时,HttpClient支持多部分文件上传,这对于上传多个文件到Web服务器非常有用。它可以处理...
- 连接池:使用`PoolingHttpClientConnectionManager`管理HTTP连接,可设置最大连接数、超时时间等。 - 请求路由:通过`HttpRequestExecutor`和`HttpClientConnectionManager`处理请求路由和重试策略。 4. **请求...
它还支持连接池,允许开发者配置最大连接数、超时时间等参数,以优化资源使用。 3. **异步处理**:除了传统的同步请求模式,HttpClient还提供了异步请求模式,使得在网络通信中可以实现非阻塞操作,提升应用的响应...
1. **基于 HttpCore**:HttpClient 是基于 HttpCore 实现的客户端 HTTP 传输类库,这意味着它能够处理 HTTP 协议的基本层面,包括连接管理、请求序列化和响应解析等。 2. **传统 IO 模型**:它基于传统的阻塞式 I/...
2. **正确配置连接池**:合理设置连接池的最大连接数和超时时间,防止资源耗尽或长时间等待。 3. **异常处理**:对可能抛出的网络异常进行妥善处理,确保程序的健壮性。 4. **性能优化**:根据实际需求选择同步或...
4. 性能优化:根据实际需求调整HttpClient的配置参数,如连接超时时间、最大连接数等。 总的来说,HTTPClient和HTTPCore是Java进行HTTP通信的重要工具,它们提供了强大的功能和灵活性,使得开发者能够方便地与远程...
- **连接池管理**:长期运行的服务应使用连接池,避免过多的连接创建和销毁,同时要注意设置合理的最大连接数和超时时间。 - **性能优化**:根据需求调整并发数,合理设置读写超时,避免阻塞。 - **安全性**:处理...
这可以通过`PoolingHttpClientConnectionManager`类实现,可以设置最大连接数、超时时间等参数。 2. **请求和响应处理**:HTTPClient支持GET、POST以及其他HTTP方法,同时可以处理HTTP头、Cookie、身份验证等。`...
2. **连接管理**:HttpClient 提供了`HttpConnectionManager`接口,用于管理与服务器的持久连接,优化性能,如复用连接、控制最大并发连接数等。`SingleClientConnManager`和`MultiThreadedHttpConnectionManager`是...
四、使用HttpClient-4.2.5.jar的注意事项 1. 性能优化:虽然HttpClient功能强大,但在现代Android环境中,可能不如Volley或OkHttp高效。因此,考虑性能和维护成本时,建议逐步迁移至更现代的库。 2. 兼容性问题:...