2013-09-26 124 views
1

我見過一些顯示消息的網站說他們「超載」。不知道這是否與數據庫連接最大化。檢查網站是否過載

這是以編程方式完成的嗎?或通過服務器設置?

+1

我們應該知道每個站點是如何做到這一點的?也許有一個「areyouoverloaded.com」網站,直到他們停止響應,在這一點上,他們通過美國郵政優先郵件派遣一封信,通知網站管理員,他們應該登錄到系統,並將他們的頁面改爲超載版。或者可能有一些代碼監視平均SQL查詢持續時間,並在執行時間超過0.5s時自動切換到超載狀態 –

+2

對不起,您看到@Marc B的日子不好,並且不知道我正在進入這裏的雷區。我只是問一個簡單的問題。標籤應該提供足夠的上下文。如果沒有傳統的方式,那麼就說出來。 –

+1

對於一個擁有你的個人資料的用戶來說,這是一個無知的問題你不覺得嗎?如果你能提供一個例子,它會有所幫助。 – samayo

回答

4

一般來說,這通常是一個負載平衡器的設置,而不是你直接寫入你的應用程序的東西。負載均衡器偶爾會檢查您的站點的服務器運行狀況,如果檢測到它們不可用或具有高延遲等,則會將流量路由到其他服務器/站點。

將它編碼到您的應用程序中意味着如果您的服務器負載過重並且應用程序速度變慢,那麼檢查它是否過載的代碼也會變慢。如果這是有道理的。

編輯: 爲了擴大這是如何與負載均衡器做了一些,你一般會在你的應用程序頁面運行的一些基本檢查,並返回一個HTTP 200,如果一切正常,或HTTP 503如果事情不好。然後,負載平衡器會在您的服務器上點擊該URL並檢查響應代碼以查看它是否正常運行(它檢查的頻率是您可以配置的)。如果它起來,很酷。如果發生故障,它將開始在其他地方發送流量。

由於您控制了檢查頁面,因此您可以根據需要編寫支票。通常你會在那裏進行一些快速的健全檢查。例如嘗試連接到數據庫,如果它給你一個「連接太多」的錯誤,那麼返回一個503,負載平衡器會知道你已經超負荷。

如果您只關心數據庫情況而不關心服務器負載或延遲等情況,只需在連接到數據庫時捕獲任何錯誤,並在發生此情況時將用戶重定向到靜態頁面,即可獲得類似的結果。例如,

try 
{ 
    $dbh = new PDO("mysql:host=localhost;dbname=whatever", $user, $pass); 
} 
catch (PDOException $e) 
{ 
    header("Location: /site_overloaded_message.html"); exit(); 
} 
+1

它確實有道理。 –