【问题标题】:Node Express on Heroku, service time spikingHeroku 上的 Node Express,服务时间飙升
【发布时间】:2014-11-01 00:31:10
【问题描述】:

我在 Heroku 上运行了一个 Node 应用程序,提供 Web 内容并充当 REST API 端点,两者都使用 node-express。我看到的问题是偶尔服务时间会急剧增加。 (有时从 50 毫秒增加到 20000 多毫秒。)这似乎发生在偶尔的静态文件加载以及提供与活动页面的心跳连接的非常简单的 API 调用中。这些峰值发生在整个页面加载的一小部分 (

例如:

heroku router - - at=info method=GET path="/static/js/thirdparty/jquery.min.js" host=somehost request_id=c1a88972-ba1b-4861-80c3-d8949fc1aa24 fwd="XXX.XXX.XXX.XXX" dyno=web.1 connect=64ms service=9560ms status=200 bytes=96677

或者,在 API 调用的情况下:

2014-10-25T01:33:39.360282+00:00 heroku router - - at=info method=POST path="/heartbeat/" host=somehost request_id=4b35cac3-b726-460d-a7fe-6cfc622b8b1c fwd="XXX.XXX.XXX.XXX" dyno=web.1 connect=0ms service=6962ms status=200 bytes=167

我不知道如何正确诊断这一点。我目前正在运行一个测功机,所以我最好的猜测是 something 正在锁定测功机。我还没有投入生产,即便如此,我也预计我的流量水平会很低——没有什么可以广泛证明在任何给定时间同时运行多个测功机是合理的。当我尝试单步执行我的代码并在服务器端添加日志时,我从未见过任何东西在我这边运行缓慢。我很欣赏我的代码中可能有许多变量会导致这种情况——我的心跳中偶尔会出现一些打嗝,从而延迟响应。但这并不能解释为什么我也会在静态提供的文件中看到它。

【问题讨论】:

    标签: node.js heroku express


    【解决方案1】:

    您在这里提到您正在使用 node + express - 由于 node 应用程序仅在单个线程中运行,这里可能的罪魁祸首是您的应用程序正在做一些锁定 CPU 的事情。

    我知道这是因为你的连接时间在这里只有 64 毫秒(这是用户请求从负载均衡器到你的测功机所花费的时间)——但服务时间本身是 9560 毫秒—— - 这意味着几乎所有的处理时间都发生在您的应用程序代码中。

    【讨论】:

      猜你喜欢
      • 2014-09-28
      • 2013-12-20
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 2021-07-13
      • 2017-12-23
      • 2020-11-05
      相关资源
      最近更新 更多