1

我在使用 Flask 向 Heroku 上的数据库发出简单查询的页面上遇到请求超时,仅在一段时间不活动后第一次访问该页面时。我研究过类似的问题,但我认为它们不适合我的情况。

为了进一步澄清并给出这个问题的背景:

  1. 只有刷新后,访问该页面才不会导致请求超时。
  2. 但是,该问题仅在网站长时间不活动后才会再次出现。
  3. 我用代码中的打印语句跟踪了错误。超时似乎是在一个页面结束时重定向到另一个页面。所有代码都正常运行,包括对数据库的查询,直到它命中返回重定向。例如,实际错误位于指定为此新页面重定向的路径上。 at=error code=H12 desc="Request timeout" method=GET path=/resultSearch host=nutrientdata.herokuapp.com fwd="216.165.95.73" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0 为了支持内部代码不是问题的观点:我在 new relic 上跟踪了数据库性能,但是在此页面上发出的查询需要很短的时间。
  4. 我尝试在本地主机上复制这种情况,但它没有给我任何错误。但是,确实,第一次在本地主机上重定向到页面比随后重定向到同一页面需要更长的时间(仅在一段时间不活动之后)
  5. 我尝试使用 new relic ping 应用程序 - 但是我不是在 ping 那个特定页面,而是在应用程序的第一页。
  6. 我试图通过在允许其他重定向之前渲染一个(临时)页面而不是重定向到另一个页面来解决这个问题。事实证明,现在问题转移到了新页面。换句话说,请求超时现在在另一个重定向上。所有这些再次发生在一段时间不活动后第一次访问应用程序期间。

我认为我正在寻找的是为什么在长时间不活动后第一次重定向需要比另一个更长的时间。我应该如何修复它来解决这个请求超时。

对此的任何帮助将不胜感激。谢谢!

4

1 回答 1

0

您说即使在您的本地开发服务器中也存在问题,所以它与 Heroku 无关。通常这种类型的问题是由于数据库的透明缓存造成的。

在您的本地开发服务器中跟踪您在最慢的情况下对数据库进行的查询(即您在重定向后访问的新页面)。

可能有一个索引要制作/改进。

于 2013-09-09T09:36:55.063 回答