gpt4 book ai didi

java - 适用于 Http2 的 Instrument Jetty HttpClient

转载 作者:行者123 更新时间:2023-12-02 09:45:48 25 4
gpt4 key购买 nike

我正在使用 Jetty 的 http2client 对我的服务器进行同步调用,我的示例程序如下,

客户端部分

Security.addProvider(new OpenSSLProvider());
SslContextFactory sslContextFactory = new SslContextFactory(true);
sslContextFactory.setProvider("Conscrypt");
sslContextFactory.setProtocol("TLSv1.3");
HTTP2Client http2Client = new HTTP2Client();
http2Client.setConnectTimeout(5000);
http2Client.setIdleTimeout(5000);

HttpClient httpClient = new org.eclipse.jetty.client.HttpClient(new HttpClientTransportOverHTTP2(http2Client), sslContextFactory);
httpClient.setMaxConnectionsPerDestination(20);
httpClient.setMaxRequestsQueuedPerDestination(100);
httpClient.setConnectTimeout(5000);
httpClient.addBean(sslContextFactory);
httpClient.start();

请求部分

Request request = httpClient.POST("my url goes here");
request.header(HttpHeader.CONTENT_TYPE, "application/json");
request.content(new StringContentProvider("xmlRequest PayLoad goes here","utf-8"));
ContentResponse response = request.send();
String res = new String(response.getContent());

我需要通过仪器来获取指标,例如每个目标的连接数、每个连接的请求数、失败的事务数等。

我的应用程序在使用wireshark或任何其他tcp工具受到限制的服务器中运行。所以我需要在java中获取这些数据。启用 jetty 的调试日志是不可行的,因为它会写入 GB 的数据。

有没有办法通过一些 util 或 java 反射来获取这些指标?

提前致谢

最佳答案

http2Client.setMaxConcurrentPushedStreams(1000);

这太大了,服务器不太可能推送 1000 个并发流。

http2Client.setConnectTimeout(30);

http2Client.setIdleTimeout(5);

超时以毫秒为单位,因此这些值太小。我还建议空闲超时设置为大于 5000 毫秒的值,例如 20000-30000 通常更好。

String res = new String(response.getContent());

这是错误的,因为您没有考虑响应字符集。请改用 response.getContentAsString()

对于指标,您可以使用 JMX 并使用 JMX 控制台(或通过标准 JMX API)提取许多指标。要为 HttpClient 设置 JMX,您可以执行以下操作:

MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
MBeanContainer mbeanContainer = new MBeanContainer(mbeanServer);
httpClient.addBean(mbeanContainer);

上面的代码会将 HttpClient 组件导出到 JMX,您可以在其中查询各个组件以获取您感兴趣的指标。

关于java - 适用于 Http2 的 Instrument Jetty HttpClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56666973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com