Optimization

分散您的伺服器負載不僅會消耗更多資源

  • April 2, 2010

我正在執行一個繁重的實時更新網站。每個使用者所需的資源量相當高,我舉個例子。

設置

每次訪問

應用程序是 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。

所以最好少一些程序來完成這項工作,或者更多。在我花費大量時間進行設置之前,我想知道這是否值得。

這裡有幾個技巧可以幫助你。

  1. 使用 tools.pingdom.com 檢查您的 URL,這將使您了解載入時間以及耗時最長的內容。
  2. 再看一下http://www.webpagetest.org/ ,它會為您提供與 PingDom 大致相同的資訊,但也可以讓您了解可以進一步提高性能的地方。
  3. 將所有靜態內容(圖像、css、javascript 等)移動到 CDN。這將極大地幫助你。
  4. 如果您使用 jQuery、Scriptaculous 等 ajax 庫,我建議使用http://code.google.com/apis/ajaxlibs/將這些庫解除安裝到 Google,這也對我有很大幫助。
  5. 如果您還沒有這樣做,我建議您將 MySQL 與您的 webend 隔離,以便在不同的單元上獲得性能。
  6. 最後,根據我的經驗,對於 apache2,我使用 worker 模組,因此它更多地基於記憶體而不是處理器使用,所以這對我有所幫助。

引用自:https://serverfault.com/questions/128730