建立索引時發生錯誤:Google 搜尋如何從索引問題中復原以及後續改善措施

2019 年 8 月 12 日,星期一

大多時候,我們的搜尋引擎都能正常運作。我們的團隊會努力避免技術問題影響搜尋網路的使用者,或影響那些編入索引並向使用者放送的網站的網站管理員。同樣地,我們用來為搜尋引擎提供技術支援的基礎系統,大多時候都能如預期運作。發生輕微服務中斷情形時,多半對一般使用者沒有影響,只有我們的團隊會發現,進而確保產品能保持正常運作。不過,就像所有複雜的系統一樣,有時可能會發生更嚴重的服務中斷,導致使用者和網站建立者的服務都中斷。

過去幾個月來,我們的索引系統就發生了這種狀況,連帶影響到基礎架構的某些其他部分。儘管我們已經盡速修復問題,但仍需為中斷服務致歉,因為我們的目標是為使用者與整體網路環境持續提供高品質的產品。

在那之後,我們仔細調查了當時的情況。調查過程中,我們學到一些經驗,在此會與您分享。在這篇網誌文章中,我們會進一步詳細解釋當時的情況,並說明將來如果再有類似情形,我們打算如何提供消息,此外,也提醒網站擁有者可以透過哪些管道與我們聯絡。

那麼幾個月前發生了什麼事?

4 月時,我們遇到了幾個有關索引的問題。搜尋索引是一個資料庫,其中保存了我們在網路上檢索到的數千億個網頁,我們認為這些網頁可以回答部分的使用者查詢的問題。當使用者在 Google 搜尋引擎中輸入查詢字詞時,我們的排名演算法會在 Google 搜尋索引中排序這些網頁,進而在不到一秒的時間內快速找到最相關的實用結果。以下進一步說明實際情況。

1. 索引問題

首先,我們暫時遺失了部分搜尋索引。

什麼...怎麼回事?「遺失部分索引」是什麼意思?這種事有可能嗎?

基本上,為使用者提供搜尋結果時,為了加快服務速度,使用者的查詢最遠只會前進到支援 Google 搜尋產品的最近距離資料中心,搜尋引擎結果網頁 (SERP) 就由此產生。因此,如果索引的組成有所修改 (新增和移除部分網頁、合併文件或其他類型的資料修改),這些修改內容必須要出現在所有資料中心。這樣一來,世界各地的使用者都會一致從最新版本的索引中取得網頁。

Google 在世界各地自有自營資料中心 (如上圖所示),以便 24 小時全年無休維持產品運作
Google 在世界各地自有自營資料中心 (如上圖所示),以便 24 小時全年無休維持產品運作 - 來源

統合所有資料中心的索引資料,是件非同小可的工作。針對大型使用者服務,我們可能會從其中一個資料中心開始部署更新,再擴展至所有相關資料中心,直到全部更新完成。至於基礎架構的機密部分,我們可能會將推出時間延長至好幾天,在不同地理區域中逐漸替換執行個體。來源

因此,當我們對搜尋索引推送了幾項預定變更時,就在 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 個別報表都會從專屬資料庫讀取資料,而該資料庫有部分內容是採用搜尋索引提供的資訊。由於必須還原到先前的搜尋索引版本,因此我們也必須暫停更新 Search Console 資料庫。這會導致部分報表資料停滯 (有些報表則有資料不穩定的情形,例如網址檢查工具)。

已建立索引網頁的索引涵蓋範圍報表,顯示 Search Console 在 2019 年 4 月的資料更新間隔問題示例,其中 2 次更新的間隔時間比通常會觀測到的時間更長。
已建立索引網頁的索引涵蓋範圍報告,顯示 Search Console 中 2019 年 4 月的資料更新間隔問題示例,其中 2 次更新的間隔時間比通常會觀測到的時間更長。

由於整個搜尋索引問題花了幾天時間復原 (請參閱上方說明),因此我們延後了幾天,等到索引問題修正後,才把重心放在修正 Search Console 資料庫。我們在 4 月 15 日 (推文) 發過消息,說明 Search Console 發生問題,目前正設法修正,修正作業在 4 月 28 日完成 (從這天起,報表再次開始收集最新資料,請參閱上方圖表)。4 月 30 日,我們在 Twitter 上發布消息,說明問題已解決 (推文)。

3. 其他與主要索引錯誤無關的問題

Google 搜尋仰賴好幾個系統共同運作。有些系統之間可以緊密連結,但在某些情況下,系統的不同部分也會在同一時刻發生不相關的問題。

在當前的範例中,在同樣的情況下,大約在收集上述主要索引錯誤發生時,我們在收集最新 Google 新聞內容時也遇到了一些短暫的問題。此外,在轉譯網頁時,特定網址開始將 Googlebot 重新導向至其他不相關的網頁。這些問題完全與索引錯誤無關,而且很快就解決 (推文 1推文 2)。

發布消息的方式以及我們打算如何改善

除了在那幾週透過社群媒體 (如上所述) 發布消息,我們也透過另外 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. 持續且盡快推文說明問題,讓網站管理員及早安心,瞭解我們已經發現問題,並進行處理。

日後若是發生類似情況,這些承諾應能讓網站管理員更清楚整個處理過程。

實踐我們的解決方案:「新網址未建立索引」個案研究

我們在 5 月 22 日測試了新的通訊策略,當時遇到了另一個問題。情況如下:處理某些網址時,重複管理系統在預定的基礎架構升級後耗盡記憶體,導致所有連入網址都停止處理。

以下是我們遵循上面強調的 3 項重點,對於溝通時間軸的看法:

  1. 我們注意到問題 (加州時間約為 5 月 22 日上午 5 點 30 分)
    我們推文 說明目前的問題 (大約是加州時間 5 月 22 日上午 6 點 40 分)
    我們推文 說明解決方案 (大約是加州時間 5 月 22 日晚上 10 點)
  2. 我們評估過是否要更新說明中心的「資料異常」頁面,但決定不更新,因為我們預估對於大部分網站管理員的 Search Console 資料不會有長期影響。
  3. 這項問題對許多人造成困惑,這表示我們先前的結論是對的,我們需要一個管道,能在 Search Console 中清楚表示,我們的系統之一可能發生了故障,會影響到網站管理員。這類解決方案可能需要較長的時間才能導入。日後我們會繼續發布這個主題的相關消息,敬請期待。

上週,我們還遇到了另一個索引問題。與 5 月 22 日一樣,我們推文告知使用者發生問題且正設法解決,而且會在問題解決後通知使用者。

如何進行偵錯以及與我們聯絡

我們希望這篇文章有讓您更清楚系統的複雜性,有時可能故障,並且也能協助您瞭解我們針對這些事件的溝通方式。雖然這篇文章主要著重於系統大範圍故障的情況,但請記得,大多數網站索引問題是基於個別網站的設定所造成,導致 Google 搜尋無法順利為網站建立索引。以這類情況而言,所有網站管理員都可以使用 Search Console 和我們的說明中心來排除問題。完成上述步驟後,如果您還是認為問題不是出自您的網站,或是不知道如何解決問題,不妨與我們和社群討論,我們隨時歡迎使用者提供寶貴意見。以下是向我們告知問題的方式:

  • 前往網站管理員社群,有時候其他網站管理員醒目顯示的問題也對您的網站有所影響。
  • 親自前來!我們非常樂意交流,歡迎透過活動與我們互動交流。
  • 透過我們的產品聯絡!Search Console 的意見回饋工具對於我們的團隊十分實用。
  • TwitterYouTube