我正在为我的应用程序使用Apache 4.*HTTPClient和PoolingHttpClientConnectionManager。我有兴趣记录从Conntion-Pool获取连接所花费的每次请求时间以及实际请求执行所花费的时间。
有什么办法能让我这么做吗?
我已经重写了PoolingHttpClientConnectionManager,并且正在重写Connect()、release aseConnection()和request estConnection()方法以增加一些计数器。
我不确定如何在这里获得实际的超文本传输协议请求,以便清楚地说明:“请求[请求数据]在获得连接时花费了时间[时间值],在服务器上执行请求时花费了时间[时间值]。”
如果您正在使用Spring Boot,您可以在Java应用程序的application.properties中将日志级别设置为DEBUG
logging.level.org.apache.http.impl.conn.PoolingHttpClientConnectionManager=DEBUG
这会记录请求、租用和释放连接时的详细信息。
您可以将它与使用Spring Sleuth进行跟踪id日志记录相结合https://spring.io/projects/spring-cloud-sleuth#overview
2023-01-19 02:54:38.869 'DEBUG [traceid=3247a65b81bfb99b]' 1 --- [ task-7908] h.i.c.PoolingHttpClientConnectionManager : Connection request: [route: {s}->https://url][total available: 1; route allocated: 8 of 8; total allocated: 8 of 20]
2023-01-19 02:54:38.869 'DEBUG [traceid=3247a65b81bfb99b]' 1 --- [ task-7908] h.i.c.PoolingHttpClientConnectionManager : Connection leased: [id: 6339][route: {s}->https://url][total available: 0; route allocated: 8 of 8; total allocated: 8 of 20]
2023-01-19 02:54:39.097 'DEBUG [traceid=3247a65b81bfb99b]' 1 --- [ task-7908] h.i.c.PoolingHttpClientConnectionManager : Connection [id: 6339][route: {s}->https://url] can be kept alive indefinitely
2023-01-19 02:54:39.097 'DEBUG [traceid=3247a65b81bfb99b]' 1 --- [ task-7908] h.i.c.PoolingHttpClientConnectionManager : Connection released: [id: 6339][route: {s}->https://url][total available: 1; route allocated: 8 of 8; total allocated: 8 of 20]