qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Linux系統性能調優之性能分析

          性能調優的第一步是性能分析,下面從性能分析著手進行一些介紹,尤其對Linux性能分析工具vmstat的用法和實踐進行詳細介紹。

            1、性能分析的目的

            1)找出系統性能瓶頸(包括硬件瓶頸和軟件瓶頸);

            2)提供性能優化的方案(升級硬件?改進系統系統結構?);

            3)達到合理的硬件和軟件配置;

            4)使系統資源使用達到最大的平衡。(一般情況下系統良好運行的時候恰恰各項資源達到了一個平衡體,任何一項資源的過渡使用都會造成平衡體系破壞,從而造成系統負載極高或者響應遲緩。比如CPU過渡使用會造成大量進程等待CPU資源,系統響應變慢,等待會造成進程數增加,進程增加又會造成內存使用增加,內存耗盡又會造成虛擬內存使用,使用虛擬內存又會造成磁盤IO增加和CPU開銷增加)

            2、影響性能的因素

            1)CPU(cpu的速度與性能很大一部分決定了系統整體的性能,是否使用SMP)

            2)內存(物理內存不夠時會使用交換內存,使用swap會帶來磁盤I0和cpu的開銷)

            3)硬盤(存儲系統)

            a、Raid技術使用(RAID0,RAID1,RAID5,RAID0+1)

            b、小文件讀寫瓶頸是磁盤的尋址(tps),大文件讀寫的性能瓶頸是帶寬

            c、Linux可以利用空閑內存作文件系統訪問的cache,因此系統內存越大存儲系統的性能也越好

            4)網絡帶寬。

            3、性能分析的步驟

            1)對資源的使用狀況進行長期的監控和數據采集(nagios、cacti)

            2)使用常見的性能分析工具(vmstat、top、free、iostat等)

            3)經驗積累

            a、應用程序設計的缺陷和數據庫查詢的濫用最有可能導致性能問題

            b、性能瓶頸可能是因為程序差/內存不足/磁盤瓶頸,但最終表現出的結果就是CPU耗盡,系統負載極高,響應遲緩,甚至暫時失去響應

            c、物理內存不夠時會使用交換內存,使用swap會帶來磁盤I0和cpu的開銷

            d、可能造成cpu瓶頸的問題:頻繁執Perl,php,java程序生成動態web;數據庫查詢大量的where子句、order by/group by排序……

            e、可能造成內存瓶頸問題:高并發用戶訪問、系統進程多,java內存泄露……

            f、可能造成磁盤IO瓶頸問題:生成cache文件,數據庫頻繁更新,或者查詢大表……

            4、vmstat詳細介紹

            vmstat是一個很全面的性能分析工具,可以觀察到系統的進程狀態、內存使用、虛擬內存使用、磁盤的IO、中斷、上下文切換、CPU使用等。對于 Linux 的性能分析,100%理解 vmstat 輸出內容的含義,并能靈活應用,那對系統性能分析的能力就算是基本掌握了。

            下面是vmstat命令的輸出結果:

          [root@monitor-www ~]# vmstat 1 5
          procs         —————memory—————      ——swap—— ——io——  ——system——   ——cpu——
          r   b    swpd     free       buff      cache   si    so    bi     bo      in    cs    us sy  id wa st
          1   0    84780    909744   267428    1912076   0     0     20     94       0     0     2  1  95  1  0
          1   2    84780    894968   267428    1912216   0     0      0   1396    2301 11337     8  3  89  0  0
          1   0    84780    900680   267428    1912340   0     0     76   1428    1854  8082     7  2  90  0  0
          1   0    84780    902544   267432    1912548   0     0    116    928    1655  7502     7  2  92  0  0
          2   0    84780    900076   267432    1912948   0     0    180    904    1963  8703    10  3  87  0  0

           對輸出解釋如下:

            1)procs

            a.r列表示運行和等待CPU時間片的進程數,這個值如果長期大于系統CPU個數,就說明CPU資源不足,可以考慮增加CPU;

            b.b列表示在等待資源的進程數,比如正在等待I/O或者內存交換等。

            2)memory

            a、swpd列表示切換到內存交換區的內存數量(以KB為單位)。如果swpd的值不為0或者比較大,而且si、so的值長期為0,那么這種情況一般不用擔心,不會影響系統性能;

            b、free列表示當前空閑的物理內存數量(以KB為單位);

            c、buff列表示buffers cache的內存數量,一般對塊設備的讀寫才需要緩沖;

            d、cache列表示page cached的內存數量,一般作文件系統的cached,頻繁訪問的文件都會被cached。如果cached值較大,就說明cached文件數較多。如果此時IO中的bi比較小,就說明文件系統效率比較好。

            3)swap

            a、si列表示由磁盤調入內存,也就是內存進入內存交換區的數量;

            b、so列表示由內存調入磁盤,也就是內存交換區進入內存的數量

            c、一般情況下,si、so的值都為0,如果si、so的值長期不為0,則表示系統內存不足,需要考慮是否增加系統內存。

            4)IO

            a、bi列表示從塊設備讀入的數據總量(即讀磁盤,單位KB/秒)

            b、bo列表示寫入到塊設備的數據總量(即寫磁盤,單位KB/秒)

            這里設置的bi+bo參考值為1000,如果超過1000,而且wa值比較大,則表示系統磁盤IO性能瓶頸。

            5)system

            a、in列表示在某一時間間隔中觀察到的每秒設備中斷數;

            b、cs列表示每秒產生的上下文切換次數。

            上面這兩個值越大,會看到內核消耗的CPU時間就越多。

            6)CPU

            a、us列顯示了用戶進程消耗CPU的時間百分比。us的值比較高時,說明用戶進程消耗的CPU時間多,如果長期大于50%,需要考慮優化程序啥的。

            b、sy列顯示了內核進程消耗CPU的時間百分比。sy的值比較高時,就說明內核消耗的CPU時間多;如果us+sy超過80%,就說明CPU的資源存在不足。

            c、id列顯示了CPU處在空閑狀態的時間百分比;

            d、wa列表示IO等待所占的CPU時間百分比。wa值越高,說明IO等待越嚴重。如果wa值超過20%,說明IO等待嚴重。

            e、st列一般不關注,虛擬機占用的時間百分比。 (Linux 2.6.11)

          posted on 2013-03-25 10:19 順其自然EVO 閱讀(2355) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄linux

          <2013年3月>
          242526272812
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 河源市| 永顺县| 临西县| 永寿县| 亚东县| 合川市| 林甸县| 鄂托克旗| 额尔古纳市| 双城市| 寻乌县| 邢台县| 桐城市| 桐庐县| 吴川市| 金阳县| 灵寿县| 正定县| 盐山县| 阿拉尔市| 阿鲁科尔沁旗| 池州市| 积石山| 康马县| 蒙自县| 赣州市| 东丽区| 雷州市| 怀宁县| 万山特区| 南平市| 正镶白旗| 石棉县| 通化市| 涪陵区| 嘉黎县| 肇源县| 舒城县| 阳江市| 定边县| 基隆市|