# 大型网站的搜索查询超时

**URL:** https://meta.discourse.org/t/search-query-times-out-for-big-sites/138267
**Category:** Development
**Created:** [2020 年1 月 10 日 19:28 UTC](https://meta.discourse.org/t/search-query-times-out-for-big-sites/138267 "2020-01-10T19:28:14Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### 作者： ![Eduardo\_Poleo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eduardo_poleo/32/155764_2.png) [@Eduardo\_Poleo](https://meta.discourse.org/u/Eduardo_Poleo)
#### 发布日期： [2020 年1 月 10 日 19:28 UTC](https://meta.discourse.org/t/search-query-times-out-for-big-sites/138267/1 "2020-01-10T19:28:15Z")

</div>

大家好，

我们最近发现 `/search` 查询经常出现超时问题。我们对一些搜索词进行了基准测试，发现某些查询可能需要长达 2 分钟才能完成。我们看到了这篇 [帖子](https://meta.discourse.org/t/502-bad-gateway-on-specific-searches/104616/5)，但想请教一下是否还有其他建议来应对这个问题。以下是与我们具体情况相关的一些信息：

- 我们最大的站点（超时最频繁的站点）大约有 1,700,000 篇帖子。
- 我们使用的是默认的 PostgreSQL autovacuum 设置。我们收集了一些相关表的统计数据：`categories`、`posts`、`topics`、`post_search_data` 和 `users`，这些表大约每天执行一次 vacuum，因此我们认为死行导致搜索变慢的可能性不大。
- 我们手动运行了 `Jobs::ReindexSearch.new({})`，但没有看到明显的改善。

我们考虑在该站点上运行 `rake search:reindex`，我们知道这将需要相当长的时间，但想请教您是否有其他建议？

提前感谢您的帮助。

---

<div class="post-metadata">

### 作者： ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### 发布日期： [2020 年1 月 10 日 19:33 UTC](https://meta.discourse.org/t/search-query-times-out-for-big-sites/138267/2 "2020-01-10T19:33:16Z")

</div>

一种快速且简单的提升搜索速度的方法是使用设置项“优先显示近期帖子”和“近期帖子数量”。通过优先展示近期帖子来填充搜索结果，这种方法效果很好。

除此之外，您还需要对数据库性能进行分析，检查执行计划、成本等。对于大型论坛，您需要更多内存以维持性能（并相应调整 PostgreSQL 设置）。

如果其他方法都无效，您也可以尝试访问 [Discourse Algolia Search](https://meta.discourse.org/t/add-algolia-search-to-your-discourse/73517?u=falco) 将 Algolia 搜索添加到您的 Discourse 论坛。

---

<div class="post-metadata">

### 作者： ![Eduardo\_Poleo](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eduardo_poleo/32/155764_2.png) [@Eduardo\_Poleo](https://meta.discourse.org/u/Eduardo_Poleo)
#### 发布日期： [2020 年1 月 13 日 15:41 UTC](https://meta.discourse.org/t/search-query-times-out-for-big-sites/138267/3 "2020-01-13T15:41:25Z")

</div>

嘿 Falco，

感谢你的建议，`search prefer recent posts` 这个技巧确实帮了大忙，搜索功能大部分已经恢复正常。我们怀疑部分索引可能已损坏，因此也开始着手排查，但眼下这个方法极大地缓解了问题。
