Optimization
分散您的伺服器負載不僅會消耗更多資源
我正在執行一個繁重的實時更新網站。每個使用者所需的資源量相當高,我舉個例子。
設置
每次訪問
應用程序是 php/mysql 所以每次訪問都會載入靜態和動態內容。
資源:apache、php、mysql
每一秒 (不超過一秒就太長了)
網站需要實時更新,所以每一秒都會有一個 ajax 呼叫來更新網站。
資源:jQuery、apache、php、mysql
單個使用者的平均消費 (花費一分鐘並訪問了 3 個頁面)
- Apache:+/- 63 個請求/響應,提供靜態和動態內容(img、css、js、html)
- php:+/- 63 個請求/響應
- mysql:+/- 63 個請求/響應
- jquery:+/- 60 個請求/響應
優化
我想優化這個過程,但我想也許最後還是一樣。
在實施和測試之前*(這將需要數週時間)*,我想從你們那裡得到一些第二意見。
每次訪問
我都想從 nginx 在前面開始,並作為代理來傳遞靜態內容。
資源:
- 動態:apache、php、mysql
- 靜態:nginx
這將大量分散 apache 的負載。
每秒
對於每秒載入的腳本,我想在前面設置帶有 nginx 的 Node.js 伺服器端 javascript。
我想將它設置為 jquery 每分鐘發出一個請求,並且 node.js 每秒將數據流式傳輸到客戶端。資源:jQuery、nginx、node.js、mysql
單個使用者的平均消費 (花費一分鐘並訪問了 3 個頁面)
- Nginx:4 個請求/響應,主要服務於靜態內容(img,css,js)
- Apache:3 隻請求頁面
- php: 3 隻請求頁面
- node.js:1 個請求 / 60 個響應
- jquery:1 個請求 / 60 個響應
- mysql:63 個請求/響應
問題
正如您在優化中看到的,來自 Apache 和 PHP 的負載被提升並放在 nginx 和 node.js 上。這些以輕量級和良好的性能而聞名。
但我有疑問,因為記憶體中還有 2 個額外載入的程序,它們會消耗 cpu。
所以最好少一些程序來完成這項工作,或者更多。在我花費大量時間進行設置之前,我想知道這是否值得。
這裡有幾個技巧可以幫助你。
- 使用 tools.pingdom.com 檢查您的 URL,這將使您了解載入時間以及耗時最長的內容。
- 再看一下http://www.webpagetest.org/ ,它會為您提供與 PingDom 大致相同的資訊,但也可以讓您了解可以進一步提高性能的地方。
- 將所有靜態內容(圖像、css、javascript 等)移動到 CDN。這將極大地幫助你。
- 如果您使用 jQuery、Scriptaculous 等 ajax 庫,我建議使用http://code.google.com/apis/ajaxlibs/將這些庫解除安裝到 Google,這也對我有很大幫助。
- 如果您還沒有這樣做,我建議您將 MySQL 與您的 webend 隔離,以便在不同的單元上獲得性能。
- 最後,根據我的經驗,對於 apache2,我使用 worker 模組,因此它更多地基於記憶體而不是處理器使用,所以這對我有所幫助。