我問的原因是堆棧溢出已經Dugg,Slashdotted和Redditted。當網站進入社交書籤/分享網站時,系統/網絡管理員必須擔心哪些技術問題?
首先,這對網站的服務器有什麼影響?其次,系統管理員可以做些什麼來確保他們的網站儘可能保持正常運行?
我問的原因是堆棧溢出已經Dugg,Slashdotted和Redditted。當網站進入社交書籤/分享網站時,系統/網絡管理員必須擔心哪些技術問題?
首先,這對網站的服務器有什麼影響?其次,系統管理員可以做些什麼來確保他們的網站儘可能保持正常運行?
不幸的是,如果在發生這種情況之前您還沒有計劃好,那可能就太晚了,您的用戶會有一段糟糕的經歷。
可擴展性是您的首要關注點。您每秒可能會獲得比每月更多的點擊次數。你的第一道防線是好的編程和設計。確保你沒有做任何愚蠢的事情,例如每次請求多次從數據庫重新加載數據而不是緩存它。在發生峯值之前,您需要做一些相當實際的負載測試以查看瓶頸的位置。
對於荒謬的高流量,考慮將某些動態頁面切換到靜態頁面的能力。
擁有可縮放的服務器體系結構也有幫助。共享主機通常不會擴展。單個專用機器通常不能縮放。使用諸如亞馬遜的EC2之類的東西來託管可以提供幫助,特別是如果您從一開始就計劃安裝一組服務器(即使您的集羣是單臺計算機)。
你下一個主要關心的是安全性。你突然成爲壞人的一個更大的目標。確保你有一個好的安全計劃。這是你應該始終擁有的東西,但在高使用率的情況下它變得更重要。
首先,問你是否真的想花幾周甚至幾千美元計劃一些甚至不可能發生的事情,如果確實發生了,可以持續約5個小時。
最簡單的解決方案是有一個很好的方法來切換到一個頁面,只是允許註冊。人們將註冊並在風暴過去後通過電子郵件發送給他們。
更精細的解決方案依賴於能夠快速擴展。這首先是一個軟件問題(你可以連接到另一臺服務器上的數據庫,你可以做負載平衡)。其次,您的託管解決方案需要支持快速擴展。想起Amazon EC2,或者也許是slicehost。使用這兩種服務,您可以輕鬆啓動新實例(「讓我們將數據庫移至其他服務器」)並展開實例(「讓我們將數據庫服務器升級至4GB RAM」)。
如果將所有數據保存在數據庫(包括會話)中,則可以輕鬆擁有多個前端服務器。對於數據庫,我通常會嘗試使用具有最高可用資源的單個服務器,但僅僅是因爲我沒有使用數據庫複製,並且過去很難做到這一點,至少在使用mysql時是如此。事情可能已經改善。
應用程序設計人員需要考慮擴展(具有更多內核和更高性能的大型機器)和/或擴展(跨多個系統分配工作負載)。 IT人員需要研究如何最好地支持這一點。網絡是你首先看到的,因爲顯然一切都在其上。從邊界開始,這通常意味着由多個提供商提供服務的網絡負載平衡器和冗餘路由器。您還可以查看地理緩存服務和應用程序,如cachefly。
你想盡可能地減少你的瓶頸。您還希望設計環境,以便在不需要太多工作的情況下按需擴展。設計工作在前面,當你獲得dugg時,它會減少頭痛。
的一些想法(什麼,我在過去和當前的項目使用): ,用於提高性能(如果需要的話),你可以把一個反向代理,魷魚緩存在服務器的前面。當然,只有當你沒有會話密鑰,並且頁面有點靜態(意味着:它們每小時只能更換一次)而不是個性化時,它纔有效。 隨着魷魚,你可以推動像typo3一樣臃腫和緩慢的CMS,從而使靜態網站的性能與舒適的CMS。
您可以將大文件外包給Amazon S3等外部服務,節省您的服務器帶寬。
如果您能夠花費一些(每月三位數)的錢,您還可以使用內容分發網絡。如果那樣的話,你的用戶會自動擴展,高可用性和低延遲。當然,你的頁面必須是可以緩存的,所以會話密鑰和個性化頁面是不可能的。如果仔細設計並考慮CDN,您至少可以緩存某些內容,如圖片和視頻以及靜態內容。
負載上升,正如其他答案所述。
您還會吸引那些只對真正有意破壞行爲感興趣的無聊人士涌入新用戶/博客評論/投票。對於允許完全匿名評論的博客來說,這主要是一個問題,其中會輸入一些可怕的內容。博客平臺可能有足夠的垃圾郵件過濾器來阻止垃圾郵件,但通常需要手動干預來清理剩餘的垃圾郵件。
即使沒有進行驗證,即使有一點進入障礙,如需要用戶名或電子郵件地址,也會大大減少故意破壞的數量。