在我们的产品服务器中,对外部服务的请求每隔一段时间就会开始超时并失败。在此之前有一段较短的高响应时间。有趣的是,我们有一组相同的服务器调用相同的服务(Apple Purchase 和/或 Facebook),并且只有一个节点的响应时间很长。因此,它不仅仅是服务缓慢。这个问题很少见且难以重现,但仍然非常令人担忧。
节点上的线程数和内存数看起来不错,没有异常只是超时。重新启动 Java 进程将始终解决此问题。
从我们的响应时间图看来,如果外部服务实际上慢了一段时间,但随后恢复了我们的一些节点,仍然会看到该节点处于关闭状态。现在这只是一个猜测,因为响应时间慢可能只是我们这边的一个错误的功能。
我在下面添加了一个代码摘录,我们为每个请求创建一个新的交换对象,所以我相当确定没有坏数据缓存。
public void doSomething() {
HttpExchange httpExchange = new HttpExchange();
httpExchange.setURL("SOME_URL");
httpExchange.setMethod("GET");
httpExchange.setEventListener(listener);
httpExchange.setTimeout(this.timeout);
this.client.send(httpExchange);
}
有人见过 Jetty HttpClient 的类似问题吗?是否有任何已知的边缘情况会导致 Jetty Http Client 以这种方式运行?
Jetty 内部是否有任何共享对象,我应该查看它是否超载了越野车?