我有两个微服务。第一个通过 Vert.x 客户端调用第二个微服务,第二个微服务通过 Vert.x 客户端调用 solr。但是所有这些过程都存在延迟问题。响应在 3-4 秒内出现,这是性能瓶颈。quarkus 中是否有任何方法或工具可以进行性能分析并详细说明导致性能问题的所有代码片段?
public class SolrWebClient {
@Inject
public Vertx vertx;
WebClient client;
@PostConstruct
public void initialize() {
this.vertx = Vertx.vertx();
this.client = WebClient.create(vertx, new WebClientOptions().setDefaultPort(443).setSsl(true).setVerifyHost(false).setTrustAll(true));
}
public Uni<JsonObject> search(URL url, SolrQuery query,Integer timeout) {
int port = url.getPort();
if (port == -1 && "https".equals(url.getProtocol())) {
port = 443;
}
if (port == -1 && "http".equals(url.getProtocol())) {
port = 80;
}
HttpRequest<Buffer> request = client.post(port, url.getHost(), url.getPath()).timeout(timeout);
return request.sendJson(query).map(resp -> {
return resp.bodyAsJsonObject();
}).onFailure().recoverWithUni(f -> {
return Uni.createFrom().item(new JsonObject().put("solrError", f.getMessage()));
});
}
}
在此之前,在第一个微服务中,我们有一个服务调用 dynamodb 来获取一些帐户记录,然后这个微服务提取用户的帐号并通过第二个微服务(负载平衡 solr 集群)在 solr 中搜索。但是我想通过某种工具或某种方式知道是什么导致了这个延迟问题,如果 quarkus 支持的话。