4 回答

TA貢獻2012條經驗 獲得超12個贊
第一,確認服務器硬件是否足夠支持當前的流量。 普通的P4服務器一般最多能支持每天10萬獨立IP,如果訪問量比這個還要大,那么必須首先配置一臺更高性能的專用服務器才能解決問題,否則怎么優化都不可能徹底解決性能問題。
第二,優化數據庫訪問。 服務器的負載過大,一個重要的原因是CPU負荷過大,降低服務器CPU的負荷,才能夠有效打破瓶頸。而使用靜態頁面可以使得CPU的負荷最小化。前臺實現完全的靜態化 當然最好,可以完全不用訪問數據庫,不過對于頻繁更新的網站,靜態化往往不能滿足某些功能。 緩存技術 就是另一個解決方案,就是將動態數據存儲到緩存文件中,動態網頁直接調用這些文件,而不必再訪問數據庫,WordPress和Z-Blog都大量使用這種緩存技術 。我自己也寫過一個Z-Blog的計數器插件,也是基于這樣的原理。 如果確實無法避免對數據庫的訪問,那么可以嘗試優化數據庫的查詢SQL.避免使用Select *from這樣的語句,每次查詢只返回自己需要的結果,避免短時間內的大量SQL查詢。

TA貢獻1786條經驗 獲得超13個贊
幾點需要注意:
盡量使用緩存,包括用戶緩存,信息緩存等,多花點內存來做緩存,可以大量減少與數據庫的交互,提高性能。
用jprofiler等工具找出性能瓶頸,減少額外的開銷。
優化數據庫查詢語句,減少直接使用hibernate等工具的直接生成語句(僅耗時較長的查詢做優化)。
優化數據庫結構,多做索引,提高查詢效率。
統計的功能盡量做緩存,或按每天一統計或定時統計相關報表,避免需要時進行統計的功能。
能使用靜態頁面的地方盡量使用,減少容器的解析(盡量將動態內容生成靜態html來顯示)。
解決以上問題后,使用服務器集群來解決單臺的瓶頸問題。
基本上以上述問題解決后,達到系統最優。
至于樓上有人提到別用JAVA來做,除非是低層的連接數過大(如大量的端口占用需求),這種情況下考慮直接C來寫,其他的可以用JAVA來做。
- 4 回答
- 0 關注
- 970 瀏覽
添加回答
舉報