0

在我们的产品服务器中,对外部服务的请求每隔一段时间就会开始超时并失败。在此之前有一段较短的高响应时间。有趣的是,我们有一组相同的服务器调用相同的服务(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 内部是否有任何共享对象,我应该查看它是否超载了越野车?

4

1 回答 1

0

仅供参考,我在网站上启动了Bug Tracking,我们终于有了一套很好的可重复性步骤,一个解决方法和一个正在修复的工作。

然而,同时修复“我目前正在通过在我的 .onExpire() 事件处理程序中调用 HttpExchange.cancel() 来解决这个问题。你能测试这个相同的修复吗?” --Wade Simmons 看到Bug Tracking

于 2012-08-28T14:01:59.287 回答