处理100个请求时,如何设置链接池参数
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.pool.PoolStats;
import org.apache.http.util.EntityUtils;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class HttpClientMultiThreadedExample {
private static final PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
public static void main(String[] args) throws InterruptedException {
// 设置连接池参数
connectionManager.setMaxTotal(8); // 最大连接数
connectionManager.setDefaultMaxPerRoute(8); // 每个路由的最大连接数
// 配置请求参数
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(100) // 和服务端建立连接时间
.setConnectionRequestTimeout(4000 *10 ) // 从连接池获取连接的超时时间
.setSocketTimeout(4000) // 读取数据超时时间,是指建立连接后,相当于服务请求处理响应时间
.build();
// 创建 HttpClient 并配置连接管理器和请求参数
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(connectionManager)
.setDefaultRequestConfig(requestConfig)
.build();
// 创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(100);
for(int i=0;i<100;i++) {
executorService.submit(() -> {
try {
HttpGet httpGetA = new HttpGet("http://127.0.0.1:5000/api?a=100");
try (CloseableHttpResponse responseA = httpClient.execute(httpGetA)) {
HttpEntity entityA = responseA.getEntity();
if (entityA != null) {
String resultA = EntityUtils.toString(entityA);
System.out.println("Response from A (param a): " + resultA);
// 获取连接池的统计信息
PoolStats totalStats = connectionManager.getTotalStats();
System.out.println("Total status: " + totalStats);
// 输出队列中的等待任务数
System.out.println("Pending tasks in queue: " + totalStats.getPending());
}
}
} catch (Exception e) {
System.err.println("Error occurred while requesting A: " + e.getMessage());
}
});
}
// 关闭线程池
executorService.shutdown();
while (true) {
PoolStats totalStats = connectionManager.getTotalStats();
// 输出队列中的等待任务数
System.out.println("Pending tasks in queue: " + totalStats.getPending());
if (executorService.isTerminated()) {
System.out.println("结束了!");
break;
}
Thread.sleep(200);
}
}
}
from flask import Flask, request, jsonify
import time
print("程序开始执行...")
time.sleep(5)
print("程序继续执行...")
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def echo():
a = request.args.get('a', default='', type=str)
print(f"Received parameters: a='{a}'")
time.sleep(3)
return jsonify({"message": f"Received parameters: a='{a}'"})
if __name__ == '__main__':
app.run(debug=False)
结果输出
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:19] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:19] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:19] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:19] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:19] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:19] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:19] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:19] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:22] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:22] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:22] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:22] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:22] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:22] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:22] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:22] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:25] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:25] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:25] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:25] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:25] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:25] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:25] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:25] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:28] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:28] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:28] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:28] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:28] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:28] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:28] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:28] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:31] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:31] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:31] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:31] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:31] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:31] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:31] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:31] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:34] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:34] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:34] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:34] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:34] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:34] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:34] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:34] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:37] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:37] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:37] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:37] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:37] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:37] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:37] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:37] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:40] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:40] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:40] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:40] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:40] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:40] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:40] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:40] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:43] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:43] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:43] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:43] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:43] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:43] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:43] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:43] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:46] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:46] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:46] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:46] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:46] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:46] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:46] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:46] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:49] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:49] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:49] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:49] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:49] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:49] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:49] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:49] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:52] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:52] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:52] "GET /api?a=100 HTTP/1.1" 200 -
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
Received parameters: a='100'
127.0.0.1 - - [26/Jan/2025 11:43:52] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:52] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:52] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:52] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:52] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:55] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:55] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:55] "GET /api?a=100 HTTP/1.1" 200 -
127.0.0.1 - - [26/Jan/2025 11:43:55] "GET /api?a=100 HTTP/1.1" 200 -