網路架站

網站搬遷停機真的會發生嗎?停機時間這樣算

多數人聽到「網站要搬家」,第一個反應是網站會有一段時間打不開。這句話其實把兩件事混在一起。網站搬遷這個動作本身,跟真的讓網站掛掉的操作疏漏,是兩個層次的問題,搬遷做得好,舊站可以一路運作到新站接手的那一刻,中間完全不必斷線。真正該搞清楚的「網站搬遷停機」,算的也不是「感覺它打不開多久」這種主觀印象,而是新舊兩邊真的都連不上、實際失去回應的那段時間有多長,兩者算出來的數字經常差很多。

先弄懂搬遷的流程怎麼運作,再回頭拆哪種情況才算真的停機,最後才能回答停機時間怎麼算這個更精確的問題。

搬遷本身不會讓網站消失,出包大多是操作沒接好

WordPress 官方的網站遷移指南把搬遷分成兩種情境,一種是網址不變、只換主機,另一種是連網域也一併更換。不管哪一種,建議的流程都一樣,先在新環境把檔案與資料庫都複製、設定妥當,確認能正常運作之後,才把訪客導過去,原本的網站在整段準備期間通常照常對外服務,不會因為「開始搬」就先關站。

真正讓網站掛掉的,多半不是搬遷這個動作,而是規劃或操作上出了差錯。常見的狀況是太早把舊站關掉,或是新環境還沒測過一輪就直接把網域指過去,把沒驗證過的問題曝露給所有訪客。Google 官方的網站遷移文件也提到,搬遷過程中排名出現短暫波動是正常現象,但事前的準備與測試能明顯降低風險,也就是說風險來自準備不足,不是搬遷這件事本身。

搬遷過程中,網站背後在做什麼?

實際動工時,搬遷的第一步是把新的主機環境準備好,安裝好對應版本的伺服器軟體,再把網站檔案與資料庫整套複製過去。這一步做完,新環境已經有一份完整的網站,只是還沒有人知道要連去那裡。

網站搬遷依序備置新環境、複製檔案與資料庫、用暫時網址測試、最後才切換 DNS,舊主機全程持續運作、不必先關站
搬遷先在新環境備妥、自己測過,最後才切換 DNS,舊主機全程照常對外服務,所以搬遷本身並不會讓網站消失。

在正式把網域指過去之前,常見的做法是先用主機商提供的暫時網址,或是在自己電腦上修改 hosts 檔,讓瀏覽器暫時直接連到新主機,藉此把新站的畫面、功能、表單都先測過一輪。這個階段完全不會影響一般訪客,因為網域還沒有改指向,大家連上的仍然是舊站。WordPress 官方的網站遷移指南特別提醒,資料庫裡有一個叫 GUID 的欄位,也就是每篇文章的專屬識別碼,不要在這階段誤動,因為它會影響 RSS 訂閱讀者識別文章的方式,是搬遷過程中容易被忽略、卻可能造成後續問題的細節之一。

訪客看到舊網站,通常是 DNS 還沒更新過去

新站測過、也正式把網域指過去之後,還是常會有人回報打不開或內容還是舊的,原因通常不是新站出問題,而是網域名稱系統(DNS)還沒更新到他那一端。網域指向新主機的那一刻,並不是全世界同時生效,各地的網路服務商、公司內部的網路設備,甚至瀏覽器本身,都會把 DNS 查詢結果快取一段時間,快取還沒過期之前,那部裝置查到的還是舊主機的位址。Cloudflare 官方文件說明,DNS 記錄的 TTL(Time To Live)決定了這筆快取能保留多久,而實際的傳播時間往往比設定的 TTL 更久,因為各地解析器的快取行為並不完全一致。這種落差感從哪裡來先弄清楚,才能回答下一個問題,這樣算不算網站停機。

DNS 傳播延遲不等於網站停機

真正的停機,指的是網站完全連不上、伺服器回應錯誤,或是連線逾時,不管訪客從哪一端連進來,得到的都是打不開的結果。DNS 傳播延遲是另一回事,網站其實運作得好好的,只是有一部分訪客的裝置或所在地的網路服務商,查到的 DNS 記錄還沒更新到新主機的位址,所以他連到的是舊主機,而不是連不到任何主機。

真正的網站搬遷停機是新舊主機都沒回應、得到錯誤或逾時,DNS 傳播延遲則是還連得到運作中的舊主機、不算停機
真正的停機是新舊兩邊都失去回應,DNS 傳播延遲則是還連得到舊站,只是內容還沒更新,體驗上不算中斷。

只要舊主機在這段過渡期間仍然保持運作,這些訪客照樣連得到網站,看到的內容或許還是搬遷前的版本,但體驗上不算是中斷,網站對他來說一直是打得開的,只是暫時還沒看到新內容。這也是為什麼搬遷時通常會建議讓新舊兩邊的主機並存一段時間,而不是新站一上線就急著關掉舊主機。新環境裡有些東西不會自動就位,比方 SSL 憑證,得靠新舊兩邊各自維持在能正常運作的狀態,撐過這段過渡期。

把這個範圍界定清楚,才能回頭去算,這一次搬遷實際佔用了多少停機時間。

停機時間怎麼算?

「停機時間」這個詞,常被業界用可用性(uptime)百分比換算。算法很單純,一年的總時數是 365 天乘以 24 小時,等於 8760 小時,乘上「1 減掉可用性百分比」,就是這個百分比實際容許的年停機時數。

可用性一年容許的停機時間
99%約 87.6 小時,相當於 3.65 天
99.9%約 8.76 小時,相當於 8 小時 46 分鐘
99.99%約 52.6 分鐘

百分比每多加一個 9,容許的停機時間就會少一個量級。這是自行代入公式算出的結果,不是引用特定機構的統計數字,用意是讓看起來很接近 100% 的可用性,對應到實際能感受到的時間長度。

可用性從 99% 到 99.99% 對應的年停機時間由 87.6 小時遞減到 52.6 分鐘,每多一個 9 就少一個量級
可用性每多一個 9,容許的年停機時間就少一個量級:99% 是 87.6 小時,到 99.99% 只剩 52.6 分鐘(公式換算示範)。

不過這是拿「一整年」當分母算出來的長期指標,跟這裡真正要問的「網站搬遷停機」是兩回事,回到單一次搬遷事件才更有意義。單一次搬遷裡,真正該被算進停機的,是新舊主機同時都連不上、或是連上了卻回應錯誤的那段時間;還有訪客在等自己那一端的 DNS 更新,但舊主機那頭仍然正常回應的時間,不該算進去,前面已經說明過,這種情況訪客連得到網站,只是還沒看到新內容,體驗上不算中斷。分清楚這些界線,才能誠實回答這次搬遷停機多久,而不是把「有人反應打不開」的時間全部算成停機。

真正會讓網站掛掉的幾個關頭

把前面拆解的機制對照回來,真正會讓網站掛掉的關頭其實就那幾個,而且都對應著某個操作環節沒有接好。以下四個情況彼此獨立,沒有先後順序,你可以逐一核對自己的搬遷計畫有沒有漏掉。

網站搬遷真正會出包的四個關頭:新主機沒測就切 DNS、資料庫沒最後同步、SSL 憑證沒搬、網址沒更新乾淨
四個彼此獨立的出包關頭:新主機沒測就切 DNS、資料庫少了最後同步、SSL 憑證沒搬過去、網址沒更新乾淨,逐一核對就能避開。

新主機沒測過就切 DNS

如果跳過先用暫時網址或 hosts 檔測試這一步,直接把 DNS 指到新主機,新環境所有沒被抓出來的相容性問題,都會直接曝露給所有訪客,而不是在切換前就先被你自己抓出來修掉。伺服器軟體版本不同、外掛設定沒搬齊,這類問題原本應該在只有自己看得到的階段就抓出來,一旦沒測就切,訪客就變成第一個發現問題的人。

資料庫少了最後一次同步

從第一次備份到正式切換,中間如果舊站還在運作、還有訪客送出表單或下單,這段期間產生的新資料,如果切換前沒有再同步一次資料庫,新站上線之後就會直接少了這段時間的內容。這種情況很容易被誤會成「搬遷把資料搞丟了」,其實原因是同步的時機沒接上,備份跟切換之間隔得越久,舊站在那段時間累積的東西就有越多會漏掉,最後一次同步安排得越接近正式切換,漏掉的風險就越低。

SSL 憑證沒跟著搬過去

憑證是綁在伺服器環境上的東西,不會因為資料庫跟檔案搬過去了,就自動出現在新主機上。如果新主機沒有事先申請或安裝好憑證,DNS 一旦切過去,你的訪客連上網站時,瀏覽器就會跳出不安全的警告,對訪客來說,這種畫面帶來的觀感,跟網站真的壞掉沒有太大差別,即使伺服器其實有正常回應。Let’s Encrypt 官方常見問題文件說明,憑證的私鑰是產生並保存在你自己的伺服器上,不是由 Let’s Encrypt 代管,也不會自動出現在其他伺服器上,這也是為什麼憑證最好安排在正式切換 DNS 之前就處理好,而不是等訪客反應瀏覽器跳警告才發現漏掉。

網址寫死在資料庫裡,卻沒更新乾淨

如果搬遷同時更換網域或調整網址結構,問題就不只是檔案搬過去而已。WordPress 會把完整的網址記錄在資料庫的設定選項裡,連帶部分文章內容也可能直接寫死了舊網址,沒有正確更新的話,會出現連結指回舊網址、部分頁面打不開的狀況。這種狀況也常被誤判成「搬遷把網站弄壞了」,其實是網址設定沒有換乾淨,WordPress 位址跟網站位址這兩個設定值要跟新網址一致,資料庫裡序列化過的內容資料,也需要用專門的搜尋取代工具處理,不能直接用文字編輯器整批取代,否則容易讓資料格式壞掉。

怎麼把停機時間壓到接近零?

順著前面幾個容易出錯的關頭反過來想,就是幾個能幫你把停機時間壓到接近零的原則。核心邏輯是讓新舊環境之間的空窗期盡量短,也盡量不讓訪客感覺到中間的落差。

  • 舊站別提早關:整個搬遷期間讓舊主機持續運作,新環境測試、資料庫搬移都不影響舊站對外服務,DNS 還沒切過去之前,訪客感覺不到任何變化。
  • 切換前先用暫時網址或 hosts 檔驗證新環境:把新站的畫面、功能、表單都測過一輪,確認沒問題再考慮切換,而不是邊測邊讓訪客承擔風險。
  • 提早把 DNS 的 TTL 調低:Cloudflare 官方文件說明,TTL 決定 DNS 記錄的快取時間,提早把 TTL 調成較短的數值,能讓各地解析器的快取提早跟著縮短,加快正式切換時的更新速度。
  • 挑訪客較少的時段做最後切換:即使真的出現短暫的落差,也讓受影響的人數降到最低。
  • 切換完成後保留一段新舊並存的觀察期:別急著關掉舊主機,讓 DNS 還沒更新到的訪客,在這段期間仍然連得到網站,等確認新站穩定、流量都正常導過去,再處理舊主機。

搬遷後,怎麼確認網站真的沒事?

DNS 正式切過去,不代表這件事就結束了。接下來幾天到幾週,有幾個面向值得你持續盯著看。

第一、網站是不是對所有訪客都能正常連上,不能只靠自己測過就算數。你自己的裝置、瀏覽器,甚至公司網路,可能都已經快取到新的 DNS 記錄,看起來一切正常,不代表所有人都是同樣的狀況。

第二、搜尋引擎能不能正常爬取、索引到新的環境。搬遷過程中常見的疏漏,是新環境的設定殘留了禁止搜尋引擎索引這類選項沒關掉,或是 robots.txt 檔案沒有跟著調整乾淨,導致爬蟲進不來。Google 官方的網站遷移文件提到,搬遷之後排名出現短暫波動是正常現象,但建議持續監控新舊網站的流量與收錄狀況,確認沒有誤擋爬取,排名通常需要一段時間才會回穩。

第三、憑證有沒有正確生效,瀏覽器連上網站時位址列不會跳出警告。第四、表單、購物車、會員登入這類跟商業直接相關的功能,是不是都照原本的邏輯正常運作。這幾項比起單純的頁面能不能打開,更容易在切換過程中被漏掉,卻也最直接影響訪客的實際使用。

網站搬遷會不會讓網站掛掉,答案其實取決於幾件事有沒有做在前面:舊站別提早關、新環境切換前先測過、DNS 提早準備好。把「網站搬遷停機」這件事算清楚,答案也不是「我感覺它打不開多久」這麼籠統,而是新舊兩邊真的同時失去回應的那段時間。把這兩件事分開看清楚,搬遷就不必是一場賭注。

資料來源
  1. Migrating WordPress — WordPress.org
  2. Site Moves and Migrations — Google Search Central
  3. Time to Live (TTL) — Cloudflare
  4. FAQ — Let's Encrypt