索引编制出现问题:Google 搜索解决索引编制问题的过程以及从中吸取的教训

2019 年 8 月 12 日,星期一

大多数情况下,我们的搜索引擎都会正常运行。我们的团队会努力防范出现一些技术问题,这些问题可能会影响正在搜索网页的用户,或可能影响我们将其网站编入索引并将其呈现给用户的网站站长。同样,用于为搜索引擎提供支持的底层系统在大多数情况下也能按预期运行。如果出现轻微的中断,除确保我们的产品正常运行的团队之外,其他人基本上无法看到这些中断。但是,与所有复杂的系统一样,有时可能会出现较严重的服务中断,这可能会导致用户和网站创建者都受到干扰。

在过去的几个月里,我们的索引系统就发生了这种情况,这对我们的基础架构的某些其他部分产生了连锁反应。尽管我们已尽快采取措施来解决此问题,但对于由此带来的不便,我们深表歉意,因为我们的目标是持续向用户和网络生态系统提供优质的产品。

从那时起,我们对相关情况进行了更密切、更细致的调查。在此过程中,我们汲取了一些经验,今天想与您分享。在本博文中,我们将深入探讨所发生的情况,阐明我们计划在今后发生此类问题时如何更好地进行沟通,并提醒网站所有者可用于与我们沟通的渠道。

几个月前发生了什么?

4 月,我们遇到了几个与索引相关的问题。搜索索引是一个数据库,其中包含我们在网络上抓取的数千亿个网页,我们认为这些网页能解答部分用户查询。当用户在 Google 搜索引擎中输入查询字词时,我们的排名算法会对搜索索引中的这些网页进行排序,以便瞬间找到最相关且最有用的结果。以下是关于相关情况的详细信息。

1. 索引编制问题

首先,我们暂时丢失了部分搜索索引。

等一下!什么?“丢失了部分搜索索引”是什么意思?这根本不可能啊!

基本上,在向用户提供搜索结果时,为了加快服务速度,用户查询只会最远“传输到”支持 Google 搜索产品的最近 Google 数据中心,并在其中生成搜索引擎结果页 (SERP)。因此,当对索引的构成部分(添加和移除某些网页、合并文档或其他类型的数据修改)进行修改时,这些修改需要反映在所有这些数据中心。结果是,系统始终向世界各地的用户提供最新版本的索引中的网页。

Google 在全球各地都设有自有自营的数据中心(如上图所示),确保我们的产品全天候正常运行
Google 在全球各地都设有自有自营的数据中心(如上图所示),确保我们的产品全天候正常运行 - 来源

在所有这些数据中心之间保持索引的一致性并非易事。对于面向用户的大型服务,我们可能会从一个数据中心开始部署更新,直到所有相关的数据中心都得到更新。对于敏感的基础架构,我们可能会将发布时间延期几天,然后交错在不同地理区域内的实例之间。来源

因此,当我们在 4 月 5 日(还是个星期五!)按照计划对搜索索引做出一些更改时,部分部署系统出现了故障。更具体地说:在我们更新部分数据中心的索引时,少数文档最终被意外从索引中移除。 因此:“我们失去了索引的一部分。”

幸运的是,我们的值班工程师很快就能找出这个问题。与此同时,我们也开始在社交媒体上解决聊天问题(感谢在那个周末通知过我们的所有人)。因此,我们能够仅在发现问题后的几个小时内就开始将搜索索引还原到之前在所有数据中心中的稳定状态(为防止此类事件发生,我们将索引进行了备份)。

我们于 4 月 7 日星期日发布通告,说明我们已知悉此问题,并且已开始恢复正常。随着数据中心逐步恢复到稳定索引,我们在 Twitter 上继续更新(4 月 8 日4 月 9 日),直到4 月 11 日,我们确信所有数据中心都完全恢复为索引的完整版本 。

2. Search Console 问题

Search Console 是一组工具和报告,可供任何网站站长用于访问与其网站在 Google 搜索中的表现相关的数据。例如,它显示网站每天在自然搜索结果中获得的展示次数和点击次数,或者显示关于网站的哪些网页包含在搜索索引中以及从搜索索引中排除的信息。

由于搜索索引存在上述问题,因此 Search Console 也开始显示不一致的情况。这是因为,Search Console 中显示的部分数据来自搜索索引本身:

  • “索引涵盖范围”报告所要求的搜索索引在各个数据中心之间是一致的。
  • 当我们将网页存储在搜索索引中时,我们可以用关于该网页的关键信号对条目进行注释,例如网页包含富媒体搜索结果标记这一事实。因此,搜索索引问题可能会影响 Search Console 中的富媒体搜索结果报告

基本上,许多 Search Console 单独的报告都会从专用数据库读取数据。该数据库部分使用来自搜索索引的信息构建。由于我们必须还原到之前的搜索索引版本,因此还必须暂停更新 Search Console 数据库。这会导致一些报告的数据趋于稳定(而另一些报告则不稳定,例如网址检查工具)。

已编入索引的网页的“索引涵盖范围”报告,其中显示了一个 2019 年 4 月 Search Console 中的数据新鲜度问题示例,2 次更新之间的间隔时间比通常观察到的更新时间要长。
已编入索引的网页的“索引涵盖范围”报告,其中显示了一个 Search Console 2019 年 4 月的数据新鲜度问题示例,2 次更新之间的间隔时间比通常观察到的更新时间要长。

由于整个搜索索引问题都需要几天的时间才能完成(参见上文说明),因此我们推迟了重点修复 Search Console 数据库的操作,直到几天之后,也就是索引编制问题得到修复之后。我们 4 月 15 日在 Twitter 微博中发布了通告,说明 Search Console 遇到了问题,我们目前正在努力解决,并在 4 月 28 日完成了问题修复工作(当天报告中再次开始收集新鲜数据,请参见上图)。我们 4 月 30 日在 Twitter 上发布通告,说明此问题已得到解决 - Twitter 微博

3. 与主要索引编制错误无关的其他问题

Google 搜索依赖于多个可以协同工作的系统。虽然其中一些系统彼此可以紧密关联,但在某些情况下,系统的不同部分大约会同时遇到不相关的问题。

在当前的例子中,在收集上述主要索引编制错误的同时,我们在收集最新的 Google 新闻内容时还遇到了短暂的问题。此外,在呈现网页时,某些网址已开始将 Googlebot 重定向到其他不相关的网页。这些问题与索引编制错误完全无关,并且已快速解决(Twitter 微博 1Twitter 微博 2)。

我们的沟通方式以及我们打算如何做得更好

除了这几周在社交媒体上沟通交流(如上所述)外,我们还在另外两个渠道(Search Console 和 Search Console 帮助中心)中向网站站长介绍了更多详情。

在 Search Console 帮助中心内

在问题已全面确定后,我们更新了“Search Console 中的数据异常”帮助页面。如果此次服务中断对大量网站所有者造成影响,我们则会使用此页面向我们的 Search Console 服务传达有关数据中断的信息。

在 Search Console 中

我们知道,并非所有用户都会阅读社交媒体或外部帮助中心网页,因此我们还在 Search Console 报告中添加了注释,用于告知用户数据可能不准确(请参见下图)。我们在修复错误后添加了这些信息。点击“查看详情”会将用户转到帮助中心的“数据异常”页面。

已编入索引的网页的“索引涵盖范围”报告,其中显示了一个示例数据注释,我们可以通过添加此类注释来通知用户特定问题。
已编入索引的网页的“索引涵盖范围”报告,其中显示了一个示例数据注释,我们可以通过添加此类注释来通知用户特定问题。

今后的沟通方式

当 Google 出现破坏性问题时,我们会营造一种强烈的“事后分析”文化:创建一份文档,就数据破碎情况进行简述,并尽量避免再次发生此类情况。Google 站点可靠性工程网站对整个过程进行了更详细的说明。

在 4 月的索引编制问题发生后,在事后分析中,我们介绍了在遇到大型系统故障时如何更好地与网站站长沟通。我们的主要决定是:

  1. 探索如何在 Search Console 中更快速地分享有关广泛存在的错误的信息,并将这些信息作为网站站长要检查的主要参考点,以防他们怀疑出现服务中断。
  2. 更及时地在 Search Console 数据异常页面上发布相关情况(如果干扰数据长期显示在 Search Console 数据中)。
  3. 继续尽快就此类问题发 Twitter 微博,以便让网站站长知晓我们已了解问题,并且问题是出在我们这一边。

这些承诺应该让将来可能发生的类似情况对网站站长来说更加透明,让网站站长全面了解相关情况。

将我们的解决方案付诸实践:“新网址未编入索引”案例研究

5 月 22 日,我们测试了新的沟通策略,因为我们遇到了另一问题。具体表现如下:在处理某些网址时,我们的重复管理系统在计划的基础架构升级后耗尽了内存,致使所有传入的网址都停止处理。

按照我们上面提到的 3 个要点,我们按以下时间表来提供沟通建议:

  1. 我们发现这个问题(加利福尼亚州时间 5 月 22 日凌晨 5:30 左右)
    发 Twitter 微博 说明存在的问题(加利福尼亚州时间 5 月 22 日上午 6:40 左右)
    发 Twitter 微博 给出解决方案(加利福尼亚州约 5 月 22 日晚上 10 点左右)
  2. 我们评估了是否要更新帮助中心中的“数据异常”页面,但由于我们预计大多数网站站长的 Search Console 数据不会受到任何长期影响,因此我们决定不这样做。
  3. 鉴于此问题对许多人造成了困惑,这确认了我们之前提出的结论:我们需要用一种更明确的方式在 Search Console 中说明某个系统的运行可能中断,从而可能对网站站长造成影响。这种解决方案可能需要更长时间才能实现。随着更多新闻的推进,我们未来还会就此主题展开沟通。

上周,我们还遇到了另一个索引编制问题。与 5 月 22 日一样,我们发 Twitter 微博通知大家,我们正在着手解决问题,并会在问题得到解决后通知大家。

如何调试和与我们沟通

我们希望这篇博文能够更清晰地说明我们的系统的复杂性及为什么系统有时候会中断,并且还有助于您了解我们如何处理相关事宜。不过,虽然这篇博文重点说明了我们系统的大规模破坏,但请务必注意,大多数网站索引编制问题是由个别网站的配置引起的,这可能会导致 Google 搜索难以正确地将网站编入索引。对于这些情况,所有网站站长都可以使用 Search Console 和我们的帮助中心来调试问题。此后,如果您仍认为某个问题并非由您的网站所致,或不知道如何解决相关问题,欢迎与我们联系并咨询我们的社区,我们始终希望获得用户的反馈。向我们报告问题的具体方法如下:

  • 访问我们的网站站长社区,有时其他网站站长会突出显示一个对您的网站也有影响的问题。
  • 当面报告!欢迎您与我们联系,欢迎参加活动,与我们交流。
  • 在我们的产品内报告!Search Console 反馈工具对我们的团队非常有用。
  • TwitterYouTube