<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    分享 | 如何查看Load Average

    VSole2021-09-19 07:59:09
    文章來源:入門小站

    后端們最怕的事情之一就是服務器的負載突然飆升,這可能又意味著一個個奪目Call馬上要打過來了。碰到這種情況怎么辦,大家第一反應一定是登陸到服務器上,先敲一個top命令看看Load Average吧。今天這篇文章和大家說說怎么看這個“Load Average”。

    Load Average

    很多人說Load Average這一個指標就能說明系統負載高了,這句話是對的。那么具體是哪里壓力大了呢?這三個數值是怎么計算出來的呢?可能很多人一下子都說不上來。

    先來說說定義吧:在一段時間內,CPU正在處理以及等待CPU處理的進程數之和。三個數字分別代表了1分鐘,5分鐘,15分鐘的統計值。

    所以,這個數值的確能反應服務器的負載情況。但是,這個數值高了也并不能直接代表這臺機器的性能有問題。可能是因為正在進行CPU密集型的計算,也有可能是因為I/O問題導致運行隊列堵了。所以,當我們看到這個數值飆升的時候,還得具體問題具體分析。直接升級機器是簡單粗暴,但是治標不治本。

    top命令一行一行看

    top命令輸出了很多參數,真正的服務器負載情況我們要綜合其他參數一起看。

    第一行:
    
    top - 20:41:08 up 18 days,  5:24,  2 users,  load average: 0.04, 0.03, 0.05
    
    top:當前時間
    up:機器運行了多少時間
    users:當前有多少用戶
    load average:分別是過去1分鐘,5分鐘,15分鐘的負載
    

    具體需要關注的果然還是load average這三個數值。大家都知道,一個CPU在一個時間片里面只能運行一個進程,CPU核數的多少直接影響到這臺機器在同時間能運行的進程數。所以一般來說Load Average的數值別超過這臺機器的總核數,就基本沒啥問題。

    第二行:
    
    Tasks: 216 total,   1 running, 215 sleeping,   0 stopped,   0 zombie
    
    Tasks:當前有多少進程
    running:正在運行的進程
    sleeping:正在休眠的進程
    stopped:停止的進程
    zombie:僵尸進程
    

    running越多,服務器自然壓力越大。

    第三行:
    
    %Cpu(s):  0.2 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    
    us: 用戶進程占CPU的使用率
    sy: 系統進程占CPU的使用率
    ni: 用戶進程空間改變過優先級
    id: 空閑CPU占用率
    wa: 等待輸入輸出的CPU時間百分比
    hi: 硬件的中斷請求
    si: 軟件的中斷請求
    st: steal time
    
    

    這一行代表了CPU的使用情況,us長期過高,表明用戶進程占用了大量的CPU時間。us+sy如果長期超過80或者90,可能就代表了CPU性能不足,需要加CPU了。

    第四行&第五行
    
    KiB Mem : 65810456 total, 30324416 free,  9862224 used, 25623816 buff/cache
    KiB Swap:  7999484 total,  7999484 free,        0 used. 54807988 avail Mem
    
    total:內存總量
    free:空閑內存
    used:使用的
    buffer/cache:寫緩存/讀緩存
    

    第四第五行分別是內存信息和swap信息。所有程序的運行都是在內存中進行的,所以內存的性能對與服務器來說非常重要。不過當內存的free變少的時候,其實我們并不需要太緊張。真正需要看的是Swap中的used信息。Swap分區是由硬盤提供的交換區,當物理內存不夠用的時候,操作系統才會把暫時不用的數據放到Swap中。所以當這個數值變高的時候,說明內存是真的不夠用了。

    第五行往下
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                  
    19868 root      20   0 19.733g 369980  15180 S   0.7  0.6 129:53.91 java                                                                                                                                                                     
    19682 root      20   0 19.859g 5.766g  22252 S   0.3  9.2 139:42.81 java                                                                                                                                                                     
    54625 100       20   0   50868  33512   4104 S   0.3  0.1   0:04.68 fluentd                                                                               
    
    PID:進程id
    USER:進程所有者
    PR:優先級。數值越大優先級越高
    NI:nice值,負值表示高優先級,正值表示低優先級
    VIRT:進程使用的虛擬內存總量
    SWAP:進程使用的虛擬內存中被換出的大小
    RES:進程使用的、未被換出的物理內存大小
    SHR:共享內存大小
    SHR:共享內存大小
    S:進程狀態。D表示不可中斷的睡眠狀態;R表示運行;S表示睡眠;T表示跟蹤/停止;Z表示僵尸進程。
    %CPU:上次更新到現在的CPU占用百分比 ;
    %MEM:進程使用的物理內存百分比 ;
    TIME+:進程使用的CPU時間總計,單位1/100秒;
    COMMAND:命令名/命令行
    

    這些就是進程信息了,從這里可以看到哪些進程占用系統資源的概況。

    其他命令

    top當然是我們最常見的查看系統狀況的命令。其他命令還有很多。vmstat,w,uptime ,iostat這些都是常用的命令。

    綜上

    看懂這些具體參數以后,就知道自己的代碼到底哪方面需要改進了,是優化內存消耗,還是優化你的代碼邏輯,當然無腦堆機器也可以,只要你說服的了老板!

    cpu參數cpu時間
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    一個基于 Linux 操作系統的服務器運行的同時,也會表征出各種各樣參數信息。通常來說運維人員、系統管理員會對這些數據會極為敏感,但是這些參數對于開發者來說也十分重要,尤其當你的程序非正常工作的時候,這些蛛絲馬跡往往會幫助快速定位跟蹤問題。
    在本文中,我們將了解如何解釋 CPU 指標并以人類可讀的格式顯示它們。CPU 負載定義為在單個時間點使用或等待使用一個內核的進程數。假設我們有一個單核系統,我們的 CPU 平均負載始終低于 0.6。如果 CPU 平均負載大于 1,則表示有進程需要使用 CPU,但由于 CPU 不可用,目前無法使用。
    不可中斷狀態實際上是系統對進程和硬件設備的一種保護機制。當負載存在明顯升高趨勢時,及時進行分析和調查。系統調用過程中并不會涉及虛擬內存等進程用戶態資源,也不會切換進程。因此系統調用通常稱為特權模式切換。進程是由內核管理和調度的,進程上下文切換只能發生在內核態。因此相比系統調用來說,在保存當前進程的內核狀態和CPU寄存器之前,需要先把該進程的虛擬內存,棧保存下來。
    如果你的Linux服務器突然負載暴增,告警短信快發爆你的手機,如何在最短時間內找出Linux性能問題所在?來看Netflix性能工程團隊的這篇博文,看它們通過十條命令在一分鐘內對機器性能問題進行診斷。概述 通過執行以下命令,可以在1分鐘內對系統資源使用情況有個大致的了解。
    雖然監控工具可以幫助我們解決大多數問題,但我們有時需要登錄實例并運行一些標準的 Linux 性能工具。看他們通過十條命令在一分鐘內對機器性能問題進行診斷。飽和是指資源的負載超出其處理能力的情況,可以作為請求隊列的長度或等待時間來公開。當我們把 Linux 操作系統所有的關鍵一級計數器找完之后,就會得到這樣一張圖:這些命令的輸出,有助于快速定位性能瓶頸。
    后端們最怕的事情之一就是服務器的負載突然飆升,這可能又意味著一個個奪目Call馬上要打過來了。
    雖然平時大部分工作都是和網絡相關, 但會接觸Linux系統, 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行環境中. 自己記憶力不好, 很多有用的Linux命令不能很好的記憶, 現在逐漸總結一下, 以便后續查看。基本操作Linux 關機,重啟#?查看當前用戶環境變量。查看有幾顆cpu,每顆分別是幾核。
    Linux比較麻煩的就是很多東西都要用命令來控制,當然,這也是很多人喜歡它的原因,比較短小但卻功能強大。
    特權模式逃逸和掛載目錄逃逸是最常見的逃逸手法。 特權模式逃逸,也就是熟知的--privileged選項啟動后容器不受seccomp等機制的的限制,常見利用就是掛載根目錄或利用docker.sock創建惡意容器。 而基于容器特權模式逃逸也分不同特權情況,本文總結常見特權模式下不同Capabilities常見對應的攻擊手法。
    Linux高可用服務器集群解決方案讓IT系統管理員可以從容應對許多常見的硬件和軟件故障,允許多臺計算機一起工作,為關鍵服務正常運行提供保障,系統管理員可以不中斷服務執行維護和升級。Linux功能豐富、強大、靈活,你可以用它完成各種任務,在這篇文章中,我們將討論一些提高Linux服務器性能的技巧。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类