1. 程式人生 > >java效能優化

java效能優化

1、請求響應慢問題

1.資料庫-慢查詢sql-是否建索引-sql是否能優化(用explain查詢sql執行計劃) 2.資料是否走快取-快取是否被擊中(如果沒有被擊中,說明最後查詢的還是資料庫) 3.如果呼叫了第三方介面-是否介面響應慢 4.業務邏輯是否可以簡化 5.是否有io阻塞(有可能是快取中某一個key被多次擊中並且key對應的value非常大)linux io命令或jprofiler 6.表資料過大,採用分庫分表 7.使用cdn(Content Delivery Network,即內容分發網路) 8.動靜分離(靜態資源部署在負載均衡上)及靜態資源壓縮(js、css) 9.增加不同的域名(一個域名的連結數是一定的) 10.程式連結方式:長連結(但是非常佔用系統記憶體,伺服器能建立長連線數也是一定的,伺服器端壓力大,客戶端無壓力),相對於tcp/ip的短連結,長連結建立後是不會被斷開的,節省建立連線和斷開的時間,適合內網應用 11.讀寫分離不是好的策略,兩個以上寫資料伺服器都同步讀伺服器的資料時,效能變慢,此方法不能橫向擴充套件 最大的瓶頸是io:網路io或檔案io

2、記憶體佔用大問題

1.多餘的日誌列印,將影響程式執行,列印日誌是阻塞操作,將終止程式開始寫檔案(多執行緒?)

3、記憶體溢位(linux系統記憶體)

http://itindex.net/detail/51440-java-記憶體-溢位

http://itindex.net/detail/46984-解密-java-記憶體

http://www.2cto.com/kf/201111/111079.html

4、堆疊溢位(堆疊是jvm中的一塊區域,所以一定是jvm、gc的問題)

其他

http://blog.csdn.net/lilu_leo/article/details/8115612

http://www.oschina.net/translate/9_fallacies_java_performance

https雙向認證解決引數篡改照成的csrf漏洞

http://edison0663.iteye.com/blog/996526

btrace 日誌監控

netty 非同步長連線

高效能的mysql

effective in java

構建高效能web站點

java虛擬機器原理

http權威指南

https://ruby-china.org/topics/10977 單元測試

王垠

http://ifeve.com/  原阿里同事的技術部落格

http://ju.outofmemory.cn/entry/100977

http://linux.cn/article-4126-1.html 日誌歸檔

新計費:

使用springtask代替quartz,由於叢集部署,需要zookeper做分散式鎖 防止兩個主機都執行了此定時任務

springbatch做批處理

cto面試:

頁面效能優化 linux優化 程式優化 資料庫優化 應用伺服器怎麼優化 JVM優化 spring aop ioc實現 設計模式 對開源軟體的看法 hbase hadoop redis 系統設計 表、程式設計 好處 底層協議http tcp/ip 分散式系統 junit 單元測試的覆蓋率是怎麼實現的