1. 程式人生 > >**標題:Java高併發問題**

**標題:Java高併發問題**

標題:Java高併發問題 在Java中出現高併發的原因一般有: 前端:web執行緒連線數不足 後臺:伺服器網路頻寬不足 資料庫:資料庫連線查詢速度跟不上 針對這三方面的問題的優化方案: 前端:實現負載均衡,配置前置代理伺服器,如Apache,NGINX等。 後臺:增加網路頻寬,DNS域名解析分發多臺伺服器; 資料庫:對資料處查詢進行優化,實現讀寫分離 總結: 對於處理高併發問題,順序應該是 程式碼 > 軟體 > 硬體 因為成本消耗是逐步提升的而且差距非常大,所以應該先從程式程式碼來優化在逐步考慮軟體以及硬體。 下面具體來說一些高併發常需處理的問題: 程式碼方面(其實有很多細節可以做到優化程式碼,我只舉幾個例子) 比如 不要頻繁的new物件,對於整個應用中,只需存在一個例項的類要採用單例模式,不要用String 進行字串連線,而使用StringBuffer或StringBuilder; 儘管Exception可以控制方法的退出,但Exception要保留stacktrace消耗效能; 儘量少使用instanceof作為條件判斷,儘量使用‘比’作為條件; 在使用類的時候儘量選取效率高的類,比如ArrayList就比Vector要好。 儘量多使用快取機制,多花點記憶體做快取可以大量減少與資料庫的互動提高效能; 前端使用靜態頁面,減少容器的解析; 優化資料庫結構,多做索引提高效率; 統計功能儘量做快取,每天定時統計相關的報表,避免必要時統計 ………

硬體提升:搭建伺服器叢集,資料庫叢集,實現讀寫分離等等

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