2009-01-11 88 views
5

我一直在想方設法理解性能和可伸縮性,並想知道開發人員/系統管理員正在爲他們的系統做些什麼。爲了標準化的答案,它會幫助,如果你能在應對以下任何把你最好的拍攝:如何最大限度地提高服務器性能?

  1. 檔案 - 上的Joomla雜誌發表;每秒最大要求每個服務器 - 對笨+的OpenID + AJAX
    • 性能喬布斯板?
    • 硬件 - 服務器,路由器,磁盤,局域網?
    • 軟件 - Lighttpd的,內存緩存,清漆,Nginx的,魷魚,英鎊,LVS,eAccelerator在等
    • 服務 - 亞馬遜S3,Akamai的,谷歌計算等
    • 配置 - 靜態散列,上游模塊,n個請求後x分鐘的Memcache,禁用日誌記錄映像請求等。
    • 其他 - 還有其他什麼? (例如,壞的,有很多的網站規範化表讀取)

編輯:請關閉這個問題asitisimportant對於Web開發人員找出這個東西之前重新考慮。程序員可以從他/她的代碼中調整分號,但仍然會因輸入memcached而導致錯誤的編碼器失敗,或者通過Google App Engine管理一個CDN

+0

這是論文不一個問題。 – cletus 2009-01-11 10:54:28

回答

2

我沒有時間按項目符號回答你問題項目符號。 =)但是我可以推薦一種分離問題的總體策略,在沒有緊急需求的情況下不需要耦合服務器資源。 mod_proxy(和任何等價物)是你的朋友。它可以很容易地將硬件拋出顯示的性能問題。當然,你不必從一開始就完美地分析系統(因爲真的很難預測真正的瓶頸將出現在哪裏)。但是當你遇到問題時。記住你的朋友。

3

我們的系統:我無法告訴您多少關於它的信息,但它是一個爲很多付費用戶提供服務的大型SaaS應用程序。


每件我們做的是做得很細緻性能/容量的工作 - 我們不能只是嘗試的事情,看看他們的工作。

最初會對當前的性能和容量進行一些分析,無論我們是否可以繼續工作。

如果可能的話,我們會在非生產系統中重現性能問題,我們可以在該系統上剖析代碼並進行實驗性更改。我們不能總是使用與生產完全相同的硬件(生產中有大量的高規格服務器; dev只有少數生產規範的專用性能測試盒)。

如果在非生產環境下無法有效分析問題,我們會在生產環境中發佈一些儀器(經過仔細測試以確保儀器不會影響系統本身)。該儀器將被「運送」並有選擇地打開以收集足夠的數據。一旦我們對問題進行了準確的分析,我們會考慮可能的解決方案,也許開發原型 - 這些可以通過功能正確性進行測試。

如果有幾個我們通常會選擇風險最小的選項。然後

正常的釋放過程將遵循 - 大量的測試,代碼審查等

如果相關,變化可能與這使它能夠在生產中快速,如果關閉了「恢復開關」運有一個問題。

我們已經確定了很多潛在的性能改進,其中大部分我們不會進一步發展,直到出現問題(除非我們正在對該軟件進行無關重構)。

3

沒有具體的性能優化總體規劃(比如先從軟件「xyz」開始)。

一般方法:

  1. 識別(!測量)您通過改進/投入時間的手段最improveable實體
  2. 優化IT
  3. 重複
相關問題