少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          通過什么方法來排查是否linux服務器的負載過大?

          通過top命令來查看服務器負載

           再對此Linux服務器性能分析之前,先了解下Linux系統Load average負載的知識,負載均值在uptime 或者top 命令中可以看到,它們可能會顯示成這個樣子:load average: 0.15, 0.14, 0.11
          很多人會這樣理解負載均值:三個數分別代表不同時間段的系統平均負載(一分鐘、五分鐘、以及十五分鐘),它們的數字當然是越小越好。數字越高,說明服務器的負載越大,這也可能是服務器出現某種問題的信號。

               一個單核的處理器可以形象得比喻成一條單車道。如果前面沒有車輛在等待,那么你可以告訴后面的司機通過。如果車輛眾多,那么需要告知他們可能需要稍等一會。

          因此,需要些特定的代號表示目前的車流情況,例如:
            0.00 表示目前橋面上沒有任何的車流。實際上這種情況與0.00 和1.00 之間是相同的,總而言之很通暢,過往的車輛可以絲毫不用等待的通過。
            1.00 表示剛好是在這座橋的承受范圍內。這種情況不算糟糕,只是車流會有些堵,不過這種情況可能會造成交通越來越慢。
            超過1.00,那么說明這座橋已經超出負荷,交通嚴重的擁堵。那么情況有多糟糕?例如2.00 的情況說明車流已經超出了橋所能承受的一倍,那么將有多余過橋一倍的車輛正在焦急的等待。3.00 的話情況就更不妙了,說明這座橋基本上已經快承受不了,還有超出橋負載兩倍多的車輛正在等待。
              上面的情況和處理器的負載情況非常相似。一輛汽車的過橋時間就好比是處理器處理某線程的實際時間。Unix 系統定義的進程運行時長為所有處理器內核的處理時間加上線程在隊列中等待的時間。
              和收過橋費的管理員一樣,你當然希望你的汽車(操作)不會被焦急的等待。所以,理想狀態下,都希望負載平均值小于1.00 。當然不排除部分峰值會超過1.00,但長此以往保持這個狀態,就說明會有問題,這時候你應該會很焦急。
                “所以你說的理想負荷為1.00 ?”
              嗯,這種情況其實并不完全正確。負荷1.00 說明系統已經沒有剩余的資源了。在實際情況中,有經驗的系統管理員都會將這條線劃在0.70:
                “需要進行調查法則”:如果長期你的系統負載在0.70 上下,那么你需要在事情變得更糟糕之前,花些時間了解其原因。
                “現在就要修復法則”:1.00 。如果你的服務器系統負載長期徘徊于1.00,那么就應該馬上解決這個問題。否則,你將半夜接到你上司的電話,這可不是件令人愉快的事情。
                “凌晨三點半鍛煉身體法則”:5.00。如果你的服務器負載超過了5.00 這個數字,那么你將失去你的睡眠,還得在會議中說明這情況發生的原因,總之千萬不要讓它發生。
              那么多個處理器呢?我的均值是3.00,但是系統運行正常!哇喔,你有四個處理器的主機?那么它的負載均值在3.00 是很正常的。在多處理器系統中,負載均值是基于內核的數量決定的。以100% 負載計算,1.00 表示單個處理器,而2.00 則說明有兩個雙處理器,那么4.00 就說明主機具有四個處理器。
            回到我們上面有關車輛過橋的比喻。1.00 我說過是“一條單車道的道路”。那么在單車道1.00 情況中,說明這橋梁已經被車塞滿了。而在雙處理器系統中,這意味著多出了一倍的負載,也就是說還有50% 的剩余系統資源- 因為還有另外條車道可以通行。
          所以,單處理器已經在負載的情況下,雙處理器的負載滿額的情況是2.00,它還有一倍的資源可以利用。
           

          從上圖的top命令可以了解到,Linux服務器運行了5天23小時20分,在load average的數據來看,這臺快吧Linux無盤服務器可以說是壓力為零,運行十分流暢。 

          方法二:輸入iostat -x -k -t 

          說明:%util:一秒中有百分之多少的時間用于I/O操作,或者說一秒中有多少時間I/O隊列是非空的。
          即delta(use)/s/1000 (因為use的單位為毫秒)
          如果%util接近100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。

          方法三:

          如果玩游戲很卡,可以用hdparm –t /dev/磁盤名稱來測試磁盤性能是否達標,下圖是單個希捷1T的盤測試的結果說明:sd表示硬盤是SATA,SCSI或者SAS,a表示串口的第一塊硬盤

           本文轉摘自:http://www.flybaaa.com/help/69_1.html



           

          一直以來以為通過top然后按數字1鍵,查到的cpu個數是服務器的物理cpu個數,今天在看服務器的硬件配置清單中發現一服務器的物理cpu個數是4個,我就奇怪了,這臺機子我的影響很深,明明是48啊,當時通過top 1查看cpu信息還提示 “Sorry ,terminal is not big enough”。想當初服務器只能識別到32個。還是重新編譯內核搞定的。后來經過查詢原來不是這樣滴,top 1查看的是邏輯cpu個數,一下為記。
          查看Linux服務器的CPU詳細情況
          判斷Linux服務器CPU情況的依據如下:
          具有相同core id的CPU是同一個core的超線程。(Any cpu with the same core id are hyperthreads in the same core.)
          具有相同physical id的CPU是同一個CPU封裝的線程或核心。(Any cpu with the same physical id are threads or cores in the same physical socket.)
          下面舉例說明。
          物理CPU個數如下:

          [root@dbabc.net ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 4

          每個物理CPU中core的個數(即核數)如下:

          [root@dbabc.net ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq cpu cores       : 12

          邏輯CPU的個數如下:

          [root@dbabc.net ~]#cat /proc/cpuinfo| grep "processor"| wc -l 48

          按理說物理CPU個數×核數就應該等于邏輯CPU的


          Dbabc.Net [http://dbabc.net]
          本文鏈接:http://dbabc.net/archives/2012/02/13/linux-cpu-info-count.shtml

          posted on 2014-12-24 13:34 abin 閱讀(477) 評論(0)  編輯  收藏 所屬分類: linux
          主站蜘蛛池模板: 丰县| 沿河| 卢湾区| 徐水县| 游戏| 双峰县| 原平市| 夏邑县| 通渭县| 无锡市| 克东县| 资阳市| 灵台县| 靖宇县| 平顺县| 通州区| 旬邑县| 虹口区| 高尔夫| 弥勒县| 贡觉县| 耒阳市| 东阿县| 阳谷县| 大名县| 德阳市| 金乡县| 安溪县| 灵石县| 马关县| 南城县| 富源县| 枞阳县| 宜宾市| 麻阳| 寿宁县| 万宁市| 周至县| 靖边县| 阳原县| 灯塔市|