使用Python建站對於日流量20w的pv你會採用什麼樣的架構?
01-11
如果考慮到可以擴展性(比如突然流量增加到100w)。如果是一個社交網站。
-----EDIT------我之前的一個網站,每日pv有4w+,但是白天一般每秒都會有40個左右的用戶同時在線(白天,峰值的時候會有60+(google analytic),用了一個2G的伺服器,仍然會顯得比較吃力(apache)。當然用的是django。後來把靜態文件以及下載都放在了amazon的S3,好一些但是還是會比較慢。
所以在想是不是可以考慮改改哪兒了。我再想有沒有容易擴展的簡單架構,可維護性會更好一些。
我沒有用python寫過web,但可以給點其他建議。
1.以20w的pv(你確定是pv而不是uv?)來算,平均每秒200000/3600/24=2.3個pv,這個量級的代碼隨便寫都可以,更不用提架構了。
2.我這裡的一台測試伺服器(8G內存,雙核2.2G CPU),可輕鬆應付一天500w pv的請求。 3.如果以20w的uv來算,算一個用戶平均觸發50個請求,pv大概在1000w。資料庫的用戶數大概也會在1000w這樣。業界常用的django等框架,再加緩存(比如memcached),資料庫使用mysql,都沒有問題。 總結:剛開始流量小,不用對架構太苛刻。如果考慮到以後的擴展,盡量使用一些分散式的工具和應用。像本地緩存就不適合以後多台機器的部署。 回復話題修改:要對「吃力」有個量的衡量,要改哪裡,首先要找出問題在哪裡。
從瀏覽器客戶端: 首先保證自己的網路沒問題,使用安裝firebug的firefox訪問網站,看看這2個參數:等待響應時間和接受數據時間。等待響應是等待伺服器的響應,如果這個時間過長,基本就是伺服器處理請求吃力了。如果接受數據時間過長,也就是網站的js、圖片等文件過大,就如您說的放在amazon會好一些。 從伺服器: 能進入到伺服器查看系統狀態嗎?吃力的時候,cpu是多少,內存佔用多少,apache啟動了幾個進程。如果連接不多,但cpu佔用很高,基本就是代碼的設計問題了。建議先優化自己的代碼。您描述的訪問量一般伺服器都能應付,首先還是看看自己的代碼能不能再優化一下吧。業務邏輯太複雜、資料庫聯表查詢太多都會造成請求過慢。
20萬pv算很小了,就用最流行的django沒錯,剛開始千萬別搞的那麼複雜,所謂架構,性能其實都別過多考慮。船到橋頭自然直,流量上去了,肯定能找到辦法解決這些問題。
問題解決了么?現在流量在什麼水平了?考慮從 django 層面優化吧,資料庫查詢優化,使用緩存。
300w uv,首頁1000w pv 如果只是展示,感覺很簡單的架構就OK了。。
推薦閱讀: