当前位置: 首页 > 知识库问答 >
问题:

Hystrix和连接池

赫连俊雄
2023-03-14

请原谅,这很可能是一个愚蠢的新手问题。

我们使用Hystrix作为两个服务之间的断路器。为了提高性能,我们使用了连接池。我们正在使用Apache HttpClient的PoolingHttpClientConnectionManager来处理连接池。

我们还使用Hystrix的“TimeoutInMissels”属性来捕获问题。

我们遇到的“问题”是,在正常操作中,创建一个新的HTTPS连接需要c130ms,但一旦合并,这些连接上的读取时间是c12ms。

因此,我们必须将“timeoutinmillizes”阈值设置为高于我们希望的值,以便在连接池决定创建新连接时,Hystrix不会启动。我们的非功能性需求希望服务的延迟比130ms更接近12ms。

我们是否正确使用Hystrix?在使用Hystrix和连接池时,我们还可以遵循其他模式吗?

非常感谢,,

麦克

共有3个答案

上官自明
2023-03-14

您必须记住的经验法则是,在正常/例行连接时间内,将超时保持在稍高且可接受的值。将hystrix超时时间保持在150ms左右(略高于常规连接时间130ms),这样它就可以在应用程序启动时处理常规连接,然后继续以更高的速度从池中为客户端提供服务。

柳深
2023-03-14

您可以在服务执行期间为特定命令调整hystrix超时。但是,您需要观察该命令的延迟指标,并将您的非功能性需求编码到其中。它可能有助于https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring.因此,您可能会调整此连接池预热或错误。

邹野
2023-03-14

应根据TP99缓冲区延迟将Hystrix配置为超时。在您的情况下,TP99延迟为130 ms。添加约20 ms的中位延迟,并将Hystrix配置为150 ms超时。

 类似资料:
  • 问题内容: 我在两个表之间有多对多关系。 表包含我的餐厅。 表包含不同的类别。 表包含两列,每列分别包含两个表的ID。 以下陈述是我能想到的,但没有给我我想要的输出。 我希望输出是有关餐厅的信息,并在最后一列中是类别的连接行。 问题答案: 要串联值,可以使用。xml路径解决方案有误,应使用和特殊字符。 您也可以使用变量解决方案

  • 我一直在到处寻找,收集零碎的东西,如果这已经在其他地方得到了回答,但我找不到,我很抱歉。 我正在用Java编写一个web应用程序,在后端使用Tomcat和SQLAzure。 有多个servlet访问SQLAzure DB。我想使用由Tomcat 8.5管理的连接池 我的应用程序上下文。META-INF中的xml如下所示: 在Java代码中,我以典型的方式访问: ds.get连接。 一切似乎都正常,

  • 本文向大家介绍说下左连接和右连接相关面试题,主要包含被问及说下左连接和右连接时的应答技巧和注意事项,需要的朋友参考一下 比如有两张表 A,B。左连接是把符合条件的所有A表的内容列出来,B表如果没有内容匹配用NULL代替。 右连接是符合条件的所有B表的内容列出来,A表如果没有内容匹配用NULL代替

  • 我正在尝试识别应用程序中的SQL连接泄漏。经过一些操作后,当我的应用程序处于空闲状态(用户未执行任何活动)时,我在返回的结果集中看到7个与我的数据库的连接。所有连接的状态均为,所有连接的值均为。 我正在使用连接池,但连接字符串中未指定连接生存期。这意味着如果我是对的,将使用它的默认值0。连接生存期的值为零意味着SQL server永远不应该关闭连接,对吗? 我让我的应用程序空闲一段时间(15-20

  • 本文向大家介绍Spring Cloud Hystrix入门和Hystrix命令原理分析,包括了Spring Cloud Hystrix入门和Hystrix命令原理分析的使用技巧和注意事项,需要的朋友参考一下 断路由器模式 在分布式架构中,当某个服务单元发生故障之后,通过断路由器的故障监控(类似熔断保险丝),向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不