1. 程式人生 > >論效能優化措施(JAVA)

論效能優化措施(JAVA)

一 前端效能優化

1.頁面的HTTP請求數量

2.使用CDN網路

3.是否使用壓縮,對於前段樣式檔案與指令碼檔案,可將其中空格、註釋等不必要的字元去掉,並且通過使用gzip壓縮來減少網路上傳輸的位元組數。

二 java程式優化

1.使用單例,如餓漢

2.future程式設計

3.執行緒池。明明是多核CPU,但程式中卻是用單執行緒序列操作,這種情況下可以將原來的序列操作改成多執行緒併發,以提高執行效率。

4.選擇就緒。也就是使用NIO程式設計,代替阻塞IO能提高程式的併發吞吐能力,降低系統的開銷。

5.減少上下文切換。程式在進行鎖等待或者被阻塞時,當前執行緒會掛起。因此,如果鎖的競爭激烈,或者執行緒頻繁IO阻塞,就可能導致上下文切換過於頻繁,從而增加排程開銷,並且降低程式的吞吐量。

6.降低鎖競爭。具體的就是synchronized鎖從方法級降低,可以在具體方法內需要進行程式碼塊同步的地方再加synchronized。

三 壓縮

在進行資料傳輸之前,可以將資料進行壓縮,以減少網路傳輸的位元組數,提升資料傳輸的速度,

四 結果快取

對於相同的使用者請求,如果每次都重複地查詢資料庫,重複地進行計算,將浪費很多的時間和資源。將計算後的結果快取到本地記憶體,或者是通過分散式快取來進行結果的快取,可以節約寶貴的CPU資源,減少重複的資料庫查詢或者磁碟IO,將原本磁頭的物理轉動變成記憶體的電子運動,提高應用的響應速度,並且執行緒的迅速釋放也使得應用的吞吐能力得到了提升。

五 資料庫的查詢效能優化

1.合理使用索引。

2.反正規化設計。將一些常用的需要關聯查詢的列進行冗餘儲存,以便減少表關聯帶來的隨機IO和全表掃描。

3.使用查詢快取。通過修改配置檔案來配置快取的大小和閾值。

4.使用搜索引擎。

5.使用key-value資料庫。將資料進行扁平化儲存。

六 GC優化

通過GC日誌能夠看出一些端倪,包括minor gc的頻率,full gc的頻率,gc導致的停頓時間以及gc發生的原因等。可以通過這些資訊來解決GC所導致的一些問題,已經對應用效能進行優化。

一般看日誌就可以進行一些引數調節,比如方法區太小那就調方法區預設大小,如果想注重GC吞吐量或者是暫停時間,可以選用相應的垃圾收集器組合。

七 硬體提升效能

分散式快取叢集來說,希望記憶體越大越好。

磁碟IO選用SSD硬碟。

採用nginx軟體負載均衡策略的網路節點來說,那網絡卡的吞吐能力就是效能的瓶頸。

多執行緒併發的時候更注重CPU的多核,越多越好。