高並發 問題怎么解決


 

對於高並發問題,我認為總的來說可以分為三個方面:前端,服務器,數據庫。

前端:web線程連接數不足

后台:服務器網絡帶寬不足

數據庫:數據庫連接查詢速度上不去

 

針對於這三方面來說要各有針對性的優化方法

(對於高並發問題,只有不斷優化,而不存在絕對的並發安全)

前端:實現負載均衡,配置前置代理服務器,如NGINX,Apache等;

后台:增加網絡帶寬,DNS域名解析分發多台服務器;

數據庫:對數據處查詢進行優化,實現讀寫分離

 

個人對處理高並發問題的一些理解:

對於處理高並發問題,順序應該是 代碼 > 軟件 > 硬件 因為成本消耗是逐步提升的而且差距非常大,所以應該先從程序代碼來優化在逐步考慮軟件以及硬件。

下面具體來說一些高並發常需處理的問題:

代碼方面(其實有很多細節可以做到優化代碼,我只舉幾個例子)

比如 

不要頻繁的new對象,對於整個應用中,只需存在一個實例的類要采用單例模式,不要用String 進行字符串連接,而使用StringBuffer或StringBuilder;

盡管Exception可以控制方法的退出,但Exception要保留stacktrace消耗性能;

盡量少使用instanceof作為條件判斷,盡量使用‘比’作為條件;

在使用類的時候盡量選取效率高的類,比如ArrayList就比Vector要好。

盡量多使用緩存機制,多花點內存做緩存可以大量減少與數據庫的交互提高性能;

前端使用靜態頁面,減少容器的解析;

優化數據庫結構,多做索引提高效率;

統計功能盡量做緩存,每天定時統計相關的報表,避免必要時統計

………

 

硬件提升:搭建服務器集群,數據庫集群,實現讀寫分離等等

 

正如短板決定水桶的盛水量,我們應該知道並發瓶頸到底出現在哪一方面,才能做出針對行的優化,所以我們可以利用一些類似於jprofiler工具來找出並發瓶頸再進行處理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM