当前位置: 首页 > article >正文

PoolingHttpClient试验

处理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)  # 休息 5 秒钟
print("程序继续执行...")

app = Flask(__name__)

@app.route('/api', methods=['GET'])
def echo():
    # 获取查询参数
    a = request.args.get('a', default='', type=str)  # 默认值为空字符串
   # b = request.args.get('b', default=0, type=int)   # 默认值为 0

    # 打印参数
    print(f"Received parameters: a='{a}'")
    time.sleep(3)  # 休息 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 -


http://www.kler.cn/a/520589.html

相关文章:

  • 独立游戏开发赚钱吗?
  • 从0到1:C++ 开启游戏开发奇幻之旅(一)
  • 重构(1)if-else
  • webview_flutter_android 4.3.0使用
  • java 字符串日期字段格式化前端显示
  • 并发操作下如何加锁,自动释放锁,异常情况可以主动释放锁
  • gitee——报错修改本地密码
  • 51单片机开发:独立键盘实验
  • 数据结构:log-structed结构MemTableSSTable
  • 代码工艺:实践 Spring Boot TDD 测试驱动开发
  • C#常考随笔2:函数中多次使用string的+=处理,为什么会产生大量内存垃圾(垃圾碎片),有什么好的方法可以解决?
  • SocketCAN
  • WebSocket 心跳机制:确保连接稳定与实时性
  • 【Rust自学】15.5. Rc<T>:引用计数智能指针与共享所有权
  • ubuntu 更新24LTS中断导致“系统出错且无法恢复,请联系系统管理员”
  • 【MySQL】--- 复合查询 内外连接
  • 使用scikit-learn中的KNN包实现对鸢尾花数据集或者自定义数据集的的预测
  • oracle 分区表介绍
  • [特殊字符]【计算机视觉】r=2 采样滤波器全解析 ✨
  • leetcode_链表 876.链表的中间节点