分類  >  編程 >

《java系統性能調優》-1.發現瓶頸

tags:    時間:2014-05-04 18:39:10
《java系統性能調優》--1.發現瓶頸
性能啊!性能!

之所以想寫寫性能調優,也是有感於我們的項目,我們採用一些手段使得系統性能上升了一個台階,總是需要把這點經驗沉澱一下。隨著工作的深入,關於系統性能的事肯定還有很多,也算是通過這個系列文章做做筆記。優化可能包括應用級別的優化,也可能包括代碼級別的優化。

「要進行優化,先得找到性能瓶頸!」 

忘記是從哪裡看到了這句話,但總算切中要害。

但在找性能瓶頸之前,我們總要先對系統性能有一個概念。

如何在不購買新硬體的條件下完成更多的工作?何時才真正需要添加硬體(更多的內存,更快的磁碟、 CPU以及網路介面)?有時只需消除一些簡單的瓶頸即可解決許多性能問題——但是要實現它,你必須充分了解自己的計算機和網路,從而找到真正的瓶頸所在。在預算短缺的今天,理解如何優化系統性能比以往任何時候都重要。一味地投資並不是能夠讓人們接受的辦法——並且也不一定生效
                                                                                                                                       -------《系統性能優化》

再看兩篇文章吧

Web開發中,你需要了解的東西
http://www.kuqin.com/web/20111207/315835.html

由12306.cn談談網站性能技術

http://www.kuqin.com/system-analysis/20120116/317410.html


看了上面的陳述,相信你已經有所感觸,說得直白一點,系統性能就是在儘可能減少投資的情況下,解決下面兩個事:

  1. Throughput ,吞吐量。也就是每秒鐘可以處理的請求數,任務數。
  2. Response time, 響應時間。也就是系統在處理一個請求或一個任務時的響應時間。

我們要做優化,就是為了讓吞吐量更大,讓響應時間更短,在二者之間達到平衡,滿足我們的業務要求。

所以,我們要發現性能瓶頸,其實就是找到影響吞吐量和響應時間的地方。


怎麼找?

使用工具!

這裡提到了

十個免費的Web壓力測試工具

http://coolshell.cn/articles/2589.html

工具還有很多,上面10個,我沒有親自用過,不過,我倒是用過一個測試java web項目性能的工具:javamelody

JavaMelody能夠在QA和實際運行生產環境監測Java或Java EE應用程序伺服器。並以圖表的形式顯示:Java內存和Java CPU使用情況,用戶Session數量,JDBC連接數,和http請求、sql請求、jsp頁面與業務介面方法(EJB3、Spring、Guice)的執行數量,平均執行時間,錯誤百分比等。圖表可以按天,周,月,年或自定義時間段查看。 

截張圖給大家看看


這只是一部分圖標,它提供的信息要遠比這豐富。

工具和方法論說多了無益,下篇文章給大家來點猛料。

發現瓶頸,怎麼辦?別急著去找程序的麻煩,先去操作系統,操作系統的報告。看看操作系統的CPU利用率,看看內存使用率,看看操作系統的IO,還有網路的IO,網路鏈接數,等等。通過了解操作系統的性能,我們才知道性能的問題,比如:帶寬不夠,內存不夠,TCP緩衝區不夠,等等,很多時候,不需要調整程序的,只需要調整一下硬體或操作系統的配置就可以了。說這些是為了提醒你,不要急著去修改你的代碼。

如果到了非要動代碼的地步,瓶頸這東西也可以根據2:8原則來說,20%的代碼耗了你80%的性能,找到那20%的代碼,你就可以優化那80%的性能。所以,緊緊鎖定那不到20%的代碼。

後續文章,我會列舉一些項目中性能調優的經驗,供大家參考,也歡迎補充。





推薦閱讀文章

Bookmark the permalink ,來源:互聯網