歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

談談Solaris系統性能上的維護

目前,由於 UNIX 操作系統的諸多優點,ISP們大多采用UNIX作為提供服務的系統平台,其中Solaris占了其中的很大比例。在Solaris的維護中,經常出現的是系統 性能 維護上的問題,影響系統性能的因素有很多,本文從對系統的平均負荷、進程監視、CPU、I/O及內存管

     目前,由於UNIX操作系統的諸多優點,ISP們大多采用UNIX作為提供服務的系統平台,其中Solaris占了其中的很大比例。在Solaris的維護中,經常出現的是系統性能維護上的問題,影響系統性能的因素有很多,本文從對系統的平均負荷、進程監視、CPU、I/O及內存管理、網絡流量診斷等方面進行了分析闡述,給出了在Solaris性能維護上的一些方法和經驗。 

      ---- 
      系統的性能是指該系統完成任務的情況,它的有效性、穩定性和響應速率。系統管理員們常常抱怨系統性能不好、不穩定、系統響應速度太慢等等,所有這類問題僅僅是一些表面現象。整個網絡系統的性能的好壞是與網絡拓樸結構,服務器系統、路由設備、路由政策、接入設備、物理線路等多個方面密切相關的,任何一個環節出現問題,都會影響整個系統的性能。在優化整個系統性能之前,必須監視、審計每一個環節中系統資源是否合理的使用和分配。服務器和工作站系統性能好壞主要取決於它怎樣合理使用和分配它的資源,定期監視、審計系統的性能是非常重要的,而且應該知道要監視系統哪些資源。系統資源包括3個方面: 

      ---- 1、 CPU; 
      ---- 2、 內存子系統; 
      ---- 3、 I/O子系統。 
      ---- 
      這3個方面,不論那一方面存在問題都會對系統性能產生影響,而審計系統性能也是從這3方面入手。審計系統性能的工具很多,在Solaris操作系統中提供了多種用來審計系統資源運行情況的工具,主要包括: 

        The uptime and sar commands,用來報告系統的平均負荷; 

        The ps command,提供系統中正在運行進程的相關信息; 

        The df command,提供有關磁盤使用方面的信息; 

        The vmstat、iostat and sar commands,報告系統活動情況,提供內存使用的相關信息、I/O系統信息、CPU活動等; 

        The swap command,用來統計系統中swap使用情況; 

        The.netstat command,用來顯示有關網絡性能方面的信息。 
      ---- 
      值得注意的是,對於服務器/工作站系統,由於用戶量的不斷增加,系統資源的使用和分配可能在一段時間內較為合理,一段時間之後,系統資源可能處於超負荷運行狀態,所以說,系統性能管理是一項長期的工作,應將系統性能管理作為日常系統管理工作的一部分,來維護系統可靠、高效運行。 

      ---- 
      在對系統進行性能優化之前,必須知道系統的硬件資源配置、軟件資源的使用及整個系統配置是否存在問題。這些問題的發現往往建立在系統給人們的印象上。比如:系統對用戶的響應速率慢,進程運行需花更多的時間等等。如果發現了這些現象,就應該采集系統主要資源數據並進行分析,找到提高系統性能的方法。 

      ---- 一、 系統的平均負荷 
      ---- 系統在不同時間內的平均負荷(Last mimute、Last 5 minutes、Last 15 
      minutes)是用來評估系統是否超負荷運行較方便、較常用的一種方法。系統在正常運行的情況下,3個值的范圍應在0-2。對於Solaris操作系統,可以用現金條命令獲取系統平均負荷(以主機public.hr.hl.cn為例): 

      ---- 1. uptime 
      ---- public.hr.hl.cn% uptime 
      ---- 2:06下午 運行1天 5:27,7 users, 平均負荷:0.00,0.01,0.01 
      ---- 2、sar(system activity 
      reporter)命令本身能用於采集系統活動數據或從sadc建立的每日活動文件中提取系統活動數據。 
public.hr.hl.cn%sar –q(從文件中取數據)
SunOS public.hr.hl.cn 5.5.1 04/08/98
00:00:01 runq-sz %runocc swpq-sz %swpocc
01:00:01  1.0   0            
02:00:01  1.8   0
03:00:01  1.3   0
04:00:01  1.8   0
05:00:01  2.0   0
Average   1.6   0

      ---- 或使用:“sar –options t n ”從當前開始,在t秒(t>=5)時間間隔內,采集n次系統活動數據。 
      ---- 
      runq-sz正常情況下它應小於2。如果此值連續大於2表明系統可能處於CPU-bound狀態。如果%runocc大於90,並且runq-sz大於2,表明CPU處於超負荷狀態,系統響應速率下降。 

      ---- 二、 系統進程監視 
      ---- 系統中運行的進程都不同程度的消耗系統資源,通過監視這些進程,找到對系統資源影響較大的進程,就能夠采取相應措施改善系統性能。 
      ---- 
      在Solaris系統中,可以通過ps命令采集進程數據,系統中有2條ps命令(/usr/bin/ps、/usr/ucb/ps),建議兩條命令結合使用,ps命令能夠用來監視系統中活動進程的執行狀態,它能匯報下列信息: 

        用戶名稱; 

        進程的ID(PID); 

        CPU使用時間; 

        內存使用情況; 

        當前進程狀態; 

        進程的優先級; 

        進程類型。 
      ---- 
      通過觀察分析ps命令輸出結果,如果發現異常情況,如某個進程占用CPU/MEM過多、某個用戶產生很多進程等等,此時的問題不是用戶的問題,而是過重的CPU 
      load阻礙用戶的訪問速率。這時候可以對那些顯爾易見的問題采取相應補救措施: 
        如果發現某個用戶產生很多進程,占用過多的系統資源,可以kill其中的消耗資源較多的進程,釋放系統資源; 

        如果發現某個進程積聚大量時間,這可能指示進程處於無限循環狀態或進程出現錯誤。在咨詢這個進程的用戶後,可以終止此進程。 

        如果發現某個不很重要的進程消耗大量CPU,可以使用nice/priocntl命令改變此進程的優先級。使它在較低的優先級中運行。 
      ---- 除采取上述措施外,還應該分析其他的問題,通常關心的是那些runnable、blocked for disk I/O、or paging 
      jobs,而不是那些sleeping、stoped進程,因為這些進程並不影響整個系統的性能。如果必要的進程占用內存很大,表明系統可能需要增加內存。 
      ---- 三、 CPU與I/O監控 
      ---- 從PS得到的數據是非常詳細的,通常不僅需要知道每個進程的狀態,而且還需知道整個系統的狀態,有許多方法可以得到整個系統的狀態比如: 
      ---- 1、 df命令報告磁盤的使用情況,顯示mount or unmount文件系統磁盤空間使用情況; 
      ---- 2、 iostat and vmstat命令顯示系統資源狀況; 
      ---- 
      iostat命令匯報磁盤I/O狀態、進程流通量、隊列長度、服務時間等,vmstat命令顯示內存使用情況、CPU負荷、paging、系統調用等等。 
      ---- 3、 sar命令收集、報告系統的活動情況。 
      ---- 四、 內存統計管理 
      ---- 
      在系統運行的不同時期,可用內存能否滿足程序運行的需求是影響系統性能的一個重要因素。如果可用內存不能滿足程序運行的需要,那麼系統就重復從物理內存中拷貝一個或多個頁面到磁盤,以及從磁盤拷貝頁面到內存。在從物理內存中拷貝一個或多個頁面到磁盤後,系統為其它任務重新使用這些內存,這就是通常所說的“paging”。一旦系統啟動paging,整個系統的性能可能會急劇下降直到系統內存又滿足程序運行的需要。總之,當可用內存不能滿足系統需要時會影響系統性能;當可用內存滿足系統需要時則不會影響系統,因此,應該經常監視有關內存使用數據並進行分析,預測可能發生的問題,擴展內存或調整內存配置參數使系統穩定可靠運行。 

      ---- 通常,系統采取兩種方式來滿足所有進程對內存的需求:paging and 
      swapping.swapping移動整個進程到磁盤,從而達到回收內存的目的。在下一次系統運行該進程時,它必須從磁盤swap區中拷貝整個進程的內存映象到內存中去。Paging移動進程的部分頁面到磁盤來達到回收內存的目的,進程的大多數頁面仍保留在內存中。 

      ---- 五、 系統信息的自動采集 
      ---- 
      為獲取系統一段時間的活動數據,啟用系統信息自動采集是非常必要的,因為它是最容易獲取系統信息的一種方式,在系統信息自動采集中有2條命令:sadc、sa1. 

      ---- 
      Sadc命令主要是采集系統活動數據,並將它放在下一個二進制文件中,這個文件只放一天數據,它位於目錄/var/adm/sa下,文件名為sadd,其中dd用當前日期代替。 

      ---- 
      為了獲取系統不同時期的數據,應該定期運行sadc。其中最簡單的方式是在/var/spool/cron/crontabs/sys文件中運行shell 
      script sa1,它運行sadc並將數據寫到文件中去。可以使用sar命令從文件摘取系統活動數據。 
      ---- 六、 網絡流量診斷 
      ---- 
      網絡問題是影響系統性能的問題之一,診斷網絡問題最簡單的工具當然是使用系統提供的命令netstat,使用“-i”選項,命令netstat能顯示接口狀態,舉例如下: 

public.hr.hl.cn% netstat –I
name mtu  net/dest address  
 ipkts ierrs opkts oerrs collis queue
lo0  8232 loopback localhost 2616  0 
    2616  0     0      0
le0  1500 202.96.30.0 tech    
  75083 0     69325 1     621    0

      ---- 命令結果顯示了在每一個接口發送和接收數據包的情況,其中的3項:ierrs、oerrs and collis與網絡性能問題有關: 
        ierrs,是指主機從網絡接收數據包中包含有多少不正確的數據包,如果ierrs很大,通常表明硬件接口存在問題或硬件驅動器接受數據包較慢,此時應該在不同時間多次采集數據進行比較來決定采取什麼措施。正常情況下,ierrs/opkts< 
        0.025%. 

        oerrs,是指主機從網絡送出的數據包中包含有多少不正確的數據包。正常情況下oerrs/ipkts< 0.025%. 

        collis,碰撞是在局域網中有兩面三刀個或以上系統同時發送數據時產生的,如果碰撞率(collis/opkts)大於5%,說明網絡負荷過大。此時應該調整網絡結構,減少網絡流量。 

Copyright © Linux教程網 All Rights Reserved