gpt4 book ai didi

performance - Heroku 上的请求偶尔缓慢

转载 作者:行者123 更新时间:2023-12-03 00:45:36 25 4
gpt4 key购买 nike

我们发现 Heroku 上的性能不一致,这与最近的 unicorn /智能路由问题无关。

这是一个请求的示例,通常需要大约 150 毫秒(20 次中有 19 次是这个时间)。您可以看到,此请求大约花费了 4 秒,或者说长了 1 到 2 个数量级。

enter image description here

一些注意事项:

  • 数据库不是瓶颈,数据库查询只花费了 25 毫秒
  • 我们有足够多的测功机,所以我不认为这是瓶颈(20 个双测功机运行 unicorn ,每个测功机有 5 个工作人员,我们每分钟仅收到 1000 个请求,平均响应时间为 150 毫秒,这意味着我们应该每分钟能够服务 (60/0.150) * 20 * 5 = 40,000 个请求。换句话说,进行此测量时,我们的测功机容量是原来的 40 倍。

所以我想知道什么可能导致这些偶尔的缓慢请求。正如我所提到的,据传闻,大约有二十分之一的请求会发生这种情况。我唯一能想到的是盒子上存在嘈杂的邻居问题,或者路由层的性能不一致。如果有人有更多信息或想法,我会很好奇。谢谢。

最佳答案

我自己也一直在解决类似的问题,但到目前为止运气不佳。

我认为首要任务是推荐 NewRelic。它可能为您提供有关这些案例的更多信息。

其次,我建议您查看队列时间:您的请求排队的时间。查看 NewRelic 来了解这一点,或者使用 Heroku 添加到传入请求中的“开始时间”HTTP header 自行完成(只需打印 now() 减去“开始时间”作为队列时间)。

当这些在我的案例中失败时,我尝试想出可能出错的事情,这是一个(非正统?奇怪?)列表:

1) DNS——您认为您是否进行过任何 DNS 调用?这些可能需要一段时间。甚至用于解析数据库主机名、Redis 主机名、外部服务提供商等的 DNS 请求。

2) 日志性能——Heroku 使用“Logplex”收集所有标准输出,然后将其导出到您自己定义的 logdrains、Papertrail 等服务。没有关于此性能的文档,并将其写入理论上,当 Heroku 刷新它可能拥有的任何缓冲区时,进程中的 stdout 可能会阻塞一段时间。

3) 获取数据库连接——不确定您使用的是哪个框架,但也许您有一个连接池,您可以从中获取数据库连接,这需要时间?它不会显示为查询时间,而是您的进程的阻塞时间。

4) Dyno 性能——Heroku 有一个附加功能,每隔几秒就会将一些服务器指标(平均负载、内存)打印到标准输出。我使用 Graphite 将这些图表绘制出来,并寻找指标与“零星缓慢请求”实例增加的时间之间的相关性。它对我没有帮助,但可能对你有帮助:)

请告诉我们您的想法。

关于performance - Heroku 上的请求偶尔缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16124431/

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