Linux系統調優和工具

Linux系統調優和問題定位需要掌握一系列強大的工具,涵蓋系統監控、性能分析、故障排查等多個方面。以下是一些核心工具和它們的典型應用場景,分類整理如下:

一、系統資源監控(實時概覽)

  1. top / htop

    • 功能: 實時動態查看系統整體性能指標(CPU、內存、Swap、負載)和進程資源占用(CPU%、MEM%、狀態、命令)。
    • 用途: 快速識別資源消耗大戶(CPU、內存)、僵尸進程、系統負載情況。htoptop的增強版,支持顏色、鼠標操作、樹狀視圖、更友好的界面。
    • 常用命令:
      • top (進入后按P按CPU排序,M按內存排序,1顯示所有CPU核心)
      • htop
  2. vmstat

    • 功能: 報告虛擬內存統計信息、進程、塊IO、中斷、CPU活動。
    • 用途: 快速查看系統整體瓶頸方向(CPU等待io wa值高表示IO瓶頸,r隊列長表示CPU飽和,si/so高表示內存不足觸發Swap交換)。
    • 常用命令: vmstat 1 (每秒刷新一次)
  3. dstat

    • 功能: 全能系統資源統計工具,整合了vmstat, iostat, ifstat, netstat等工具的功能,支持彩色輸出、CSV導出。
    • 用途: 同時監控CPU、磁盤、網絡、內存、中斷、上下文切換等,一目了然發現關聯性(如網絡流量激增時磁盤IO是否也高)。
    • 常用命令: dstat -cdngym --top-cpu --top-mem

二、CPU 性能分析

  1. mpstat

    • 功能: 報告每個CPU或所有CPU的平均使用情況,包括用戶態、內核態、空閑、IO等待、軟硬中斷、虛擬化占用等。
    • 用途: 查看CPU使用是否均衡,是否存在單個核心過載,分析CPU時間消耗在用戶態還是內核態。
    • 常用命令: mpstat -P ALL 1
  2. pidstat

    • 功能: 監控進程/線程的CPU、內存、IO等使用情況。
    • 用途: 細粒度定位具體哪個進程/線程消耗CPU高。
    • 常用命令:
      • pidstat -u 1 (查看所有進程CPU使用)
      • pidstat -t -p <PID> 1 (查看特定進程的所有線程CPU使用)
  3. perf

    • 功能: Linux內核提供的強大性能分析工具(性能計數器)。
    • 用途:
      • perf top:實時顯示消耗CPU最多的函數/指令(類似top,但深入到函數級)。
      • perf record / perf report:錄制性能事件(如CPU周期、緩存命中/失效、分支預測失誤),生成報告進行離線分析。
      • perf stat:運行一個命令并統計其性能計數器(指令數、周期數、緩存引用/失效等)。
    • 用途: 深入分析CPU熱點(哪些函數最耗時)、緩存效率、分支預測問題,定位代碼級性能瓶頸。
  4. uptime

    • 功能: 顯示系統運行時間、當前登錄用戶數和系統平均負載。
    • 用途: 快速了解系統負載趨勢(1分鐘、5分鐘、15分鐘平均值)。負載高于CPU核心數通常表示存在排隊。

三、內存 性能分析

  1. free

    • 功能: 顯示系統總體內存和Swap使用情況(總量、已用、空閑、緩沖、緩存)。
    • 用途: 快速了解物理內存和Swap空間的使用壓力。關鍵看available(可用內存,包含可回收的緩存/緩沖)。
    • 常用命令: free -h (以人類可讀格式顯示)
  2. vmstat (見上文)

    • 用途: 關注si(每秒從Swap讀入內存)、so(每秒從內存寫入Swap)。si/so持續大于0是內存不足的強烈信號。
  3. pidstat (見上文)

    • 用途: pidstat -r 1 查看進程的內存使用(常駐集RSS、虛擬內存VSZ、缺頁異常)。
  4. pmap

    • 功能: 報告指定進程的詳細內存映射情況。
    • 用途: 分析進程內存具體用在哪些庫、堆、棧上,查找內存泄漏嫌疑區域。
    • 常用命令: pmap -x <PID>
  5. slabtop

    • 功能: 實時顯示內核slab緩存(內核對象緩存)的使用情況。
    • 用途: 診斷內核級內存消耗或泄漏。

四、磁盤 I/O 性能分析

  1. iostat

    • 功能: 監控系統所有磁盤設備的IO統計信息(TPS、讀寫速度、讀寫延遲、隊列長度、設備利用率%util)。
    • 用途: 識別磁盤瓶頸(高%util、長await/wait表示設備飽和或慢)、對比不同磁盤性能。
    • 常用命令: iostat -dx 1 (查看設備詳細統計,每秒刷新)
  2. iotop

    • 功能: 類似top,但實時顯示按磁盤IO排序的進程/線程。
    • 用途: 快速定位哪個進程在進行大量磁盤讀寫。
    • 常用命令: iotop
  3. pidstat (見上文)

    • 用途: pidstat -d 1 查看進程的磁盤讀寫統計(kB_rd/s, kB_wr/s)。
  4. lsof

    • 功能: 列出被進程打開的文件。
    • 用途: 結合iostat/iotop定位到具體進程后,查看該進程正在讀寫哪些文件。
    • 常用命令: lsof -p <PID>
  5. blktrace / blkparse / btt

    • 功能: 強大的塊設備層IO跟蹤分析工具套件。
    • 用途: 深入分析IO請求在塊設備層(從文件系統下發到設備驅動完成)的生命周期和延遲分布,定位IO棧中的具體瓶頸點。學習曲線較陡。

五、網絡 性能分析

  1. netstat / ss

    • 功能: 顯示網絡連接、路由表、接口統計、偽裝連接、組播成員等信息。ss (socket statistics) 是netstat的現代替代品,通常更快更高效。
    • 用途: 查看連接狀態(如大量TIME_WAITCLOSE_WAIT)、監聽端口、網絡接口流量統計、路由信息。
    • 常用命令:
      • ss -tunap (查看所有TCP/UDP連接及對應進程)
      • netstat -s / ss -s (查看網絡棧統計匯總)
      • netstat -i / ip -s link (查看網絡接口統計)
  2. ip

    • 功能: 強大的網絡接口、路由、鄰居(ARP)、隧道等配置和管理工具(替代老舊的ifconfig, route, arp)。
    • 用途: 配置和查看網絡接口、路由表、ARP緩存等。
    • 常用命令:
      • ip addr show
      • ip route show
      • ip neigh show (ARP表)
  3. ethtool

    • 功能: 查詢和控制網絡接口驅動參數和硬件設置。
    • 用途: 查看網卡驅動信息、速度、雙工模式、統計信息(丟包、錯包)、調整Ring Buffer大小等。
    • 常用命令: ethtool <interface>, ethtool -S <interface> (查看詳細統計)
  4. tcpdump / wireshark

    • 功能: 強大的網絡抓包和分析工具。tcpdump是命令行工具,wireshark是帶圖形界面的分析器。
    • 用途: 捕獲和分析網絡數據包,診斷網絡連接問題、協議問題、性能問題(重傳、亂序、窗口大小)。非常底層,需要網絡協議知識。
  5. nload / iftop

    • 功能: 實時監控網絡接口的流量(帶寬使用)。nload顯示總帶寬,iftop按連接對顯示帶寬使用排名。
    • 用途: 快速查看哪個連接或主機占用了大量帶寬。
  6. ping / traceroute / mtr

    • 功能: 測試網絡連通性、路徑和延遲。mtr (My Traceroute) 結合了pingtraceroute的功能。
    • 用途: 診斷網絡可達性、路由路徑、網絡延遲和丟包發生在哪一跳。

六、系統日志分析

  1. dmesg

    • 功能: 查看內核環形緩沖區中的消息。
    • 用途: 診斷硬件問題(驅動加載失敗、設備錯誤)、內核崩潰信息(Oops/Panic)、文件系統錯誤、內存不足事件等。系統啟動異常或硬件故障排查必看!
    • 常用命令: dmesg -T (帶時間戳), dmesg | grep -i error
  2. journalctl (Systemd系統)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89089.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89089.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89089.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何快速有效地在WordPress中添加Instagram動態

在當今社交媒體的時代&#xff0c;通過展示Instagram的最新動態&#xff0c;可以有效吸引讀者的目光&#xff0c;同時豐富網站內容。很多人想知道&#xff0c;如何把自己精心運營的Instagram內容無縫嵌入WordPress網站呢&#xff1f;別擔心&#xff0c;操作并不復雜&#xff0c…

spring容器加載工具類

在Spring框架中&#xff0c;工具類通常不需要被Spring容器管理&#xff0c;但如果確實需要獲取Spring容器中的Bean實例&#xff0c;可以通過靜態方法設置和獲取ApplicationContext。下面是一個典型的Spring容器加載工具類的實現&#xff1a;這個工具類通過實現ApplicationConte…

定時器更新中斷與串口中斷

問題&#xff1a;我想把打印姿態傳感器的角度&#xff0c;但是重定向的打印函數突然打印不出來。嘗試&#xff1a;我懷疑是優先級的問題&#xff0c;故調整了串口&#xff0c;定時器&#xff0c;dma的優先級可是發現調了還是沒有用&#xff0c;最終發現&#xff0c;我把定時器中…

用Python向PDF添加文本:精確插入文本到PDF文檔

PDF 文檔的版式特性使其適用于輸出不可變格式的報告與合同。但若要在此類文檔中插入或修改文本&#xff0c;常規方式難以實現。借助Python&#xff0c;我們可以高效地向 PDF 添加文本&#xff0c;實現從文檔生成到內容管理的自動化流程。 本文將從以下方面介紹Python實現PDF中…

Quick API:賦能能源行業,化解數據痛點

隨著全球能源結構的轉型和數字化的深入推進&#xff0c;能源行業正面臨前所未有的機遇與挑戰。海量的實時數據、復雜的業務系統、以及對數據安全和高效利用的迫切需求&#xff0c;都成為了能源企業在數字化轉型道路上的核心痛點。本文將深入探討麥聰Quick API如何憑借其獨特優勢…

Google Chrome V8< 13.6.86 類型混淆漏洞

【高危】Google Chrome V8< 13.6.86 類型混淆漏洞 漏洞描述 Google Chrome 是美國谷歌&#xff08;Google&#xff09;公司的一款Web瀏覽器&#xff0c;V8 是 Google 開發的高性能開源 JavaScript 和 WebAssembly 引擎&#xff0c;廣泛應用于 Chrome 瀏覽器和 Node.js 等環…

力扣經典算法篇-23-環形鏈表(哈希映射法,快慢指針法)

1、題干 給你一個鏈表的頭節點 head &#xff0c;判斷鏈表中是否有環。 如果鏈表中有某個節點&#xff0c;可以通過連續跟蹤 next 指針再次到達&#xff0c;則鏈表中存在環。 為了表示給定鏈表中的環&#xff0c;評測系統內部使用整數 pos 來表示鏈表尾連接到鏈表中的位置&…

HarmonyOS DevEco Studio 小技巧 42 - 鴻蒙單向數據流

在鴻蒙應用開發中&#xff0c;狀態管理是構建響應式界面的核心支柱&#xff0c;而 單向數據流&#xff08;Unidirectional Data Flow, UDF&#xff09;作為鴻蒙架構的重要設計原則&#xff0c;貫穿于組件通信、狀態更新和界面渲染的全流程。本文將結合鴻蒙 ArkUI 框架特性&…

【LeetCode 3136. 有效單詞】解析

目錄LeetCode中國站原文原始題目題目描述示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a;提示&#xff1a;講解化繁為簡&#xff1a;如何優雅地“盤”邏輯判斷題第一部分&#xff1a;算法思想 —— “清單核對”與“一票否決”第二部分&#xff1a;代碼實現 —— 清晰…

前端面試專欄-算法篇:24. 算法時間與空間復雜度分析

&#x1f525; 歡迎來到前端面試通關指南專欄&#xff01;從js精講到框架到實戰&#xff0c;漸進系統化學習&#xff0c;堅持解鎖新技能&#xff0c;祝你輕松拿下心儀offer。 前端面試通關指南專欄主頁 前端面試專欄規劃詳情 算法時間與空間復雜度分析&#xff1a;從理論到實踐…

bash中||與的區別

在 Bash 中&#xff0c;|| 和 && 是兩種常用的邏輯操作符&#xff0c;用于控制命令的執行流程。它們的核心區別如下&#xff1a;1. ||&#xff08;邏輯 OR&#xff09; 作用&#xff1a;如果前一個命令失敗&#xff08;返回非零退出碼&#xff09;&#xff0c;則執行后…

OpenCV實現感知哈希(Perceptual Hash)算法的類cv::img_hash::PHash

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 PHash是OpenCV中實現感知哈希&#xff08;Perceptual Hash&#xff09;算法的類。該算法用于快速比較圖像的視覺相似性。它將圖像壓縮為一個簡短的…

數據庫遷移人大金倉數據庫

遷移前的準備工作 安裝官方的kdts和KStudio工具 方案說明 一、數據庫遷移&#xff1a;可以使用kdts進行數據庫的按照先遷移表結構、后數據的順序遷移&#xff08;kdts的使用可以參考官方文檔&#xff09; 其他參考文檔 人大金倉官網&#xff1a;https://download.kingbase…

uniapp 微信小程序Vue3項目使用內置組件movable-area封裝懸浮可拖拽按鈕(拖拽結束時自動吸附到最近的屏幕邊緣)

一、最終效果 二、具體詳情請看movable-area與movable-view官方文檔說明 三、參數配置 1、代碼示例 <TFab title"新建訂單" click"addOrder" /> // title:表按鈕文案 // addOrder:點擊按鈕事件四、組件源碼 <template><movable-area cl…

linux kernel為什么要用IS_ERR()宏來判斷指針合法性?

在 Linux 內核中&#xff0c;IS_ERR() 宏的設計與內核的錯誤處理機制和指針編碼規范密切相關&#xff0c;主要用于判斷一個“可能攜帶錯誤碼的指針”是否代表異常狀態。其核心目的是解決內核中指針返回值與錯誤碼的統一表示問題。以下從技術背景、設計邏輯和實際場景三個維度詳…

Cookie與Session:Web開發核心差異詳解

理解 Cookie 和 Session 的區別對于 Web 開發至關重要,它們雖然經常一起使用,但扮演著不同的角色。核心區別在于: Cookie:存儲在客戶端(用戶的瀏覽器)的數據片段。 Session:存儲在服務器端的數據結構,用于跟蹤特定用戶的狀態。 下面是詳細的對比: 特性CookieSession…

【相干、相參】 雷電名詞溯源

〇、廢話因緣 最近某些國產的微波制造公司總是提到一個概念【相干】【相參】【嚴格相參】等等概念層出不窮&#xff0c;讓人苦惱。 一、這玩意還是英文溯源吧 這幾個概念都聚焦在一個單詞【Coherence】&#xff1b;所以就是說兩個波形之間有某種聯系&#xff0c;不一定就是完全…

MYSQL練習2

一、對mydb11_stu庫進行查詢步驟1.創建mydb11_stu庫并使用2.創建score表和student表3.向兩張表插入數據student表&#xff1a;score表&#xff1a;4.完成查詢&#xff08;1&#xff09;分別查詢student表和score表的所有記錄&#xff08;2&#xff09;查詢student表的第2小到5條…

Spring Boot全局異常處理:打造堅如磐石的應用防線

引言在當今的軟件開發領域&#xff0c;隨著業務的日益復雜和系統規模的不斷擴大&#xff0c;Spring Boot 已成為 Java 開發中備受青睞的框架。它以其強大的功能、便捷的配置和快速的開發體驗&#xff0c;幫助開發者們高效地構建各種應用程序。在 Spring Boot 應用的開發過程中&…

藥品掛網價、藥品集采價格、藥品上市價格一鍵查詢!

相信許多人在查詢藥品價格時感到無從下手&#xff0c;那是因為對藥品定價機制和標準的不了解&#xff0c;醫院及藥店的藥品價格查詢可通過筆者之前的文章進行了解&#xff1a;如何查詢藥品的價格&#xff08;醫院&藥店&鄉鎮衛生院&#xff09;&#xff1f; 而今天筆者要…