linux網路開發者定位問題常用工具和命令總結

来源:https://www.cnblogs.com/bewolf/archive/2023/04/15/17320066.html
-Advertisement-
Play Games

本文章來自我的微信個人技術公眾號 網路技術修煉,公眾號中總結普及網路基礎知識,包括基礎原理、網路方案、開發經驗和問題定位案例等,歡迎關註。 Linux網路開發者面臨的問題往往比較複雜,因此需要使用一些工具和命令來進行定位和解決。在本篇博客中,我將總結一些常用的Linux網路開發者工具和命令,包括網路 ...


本文章來自我的微信個人技術公眾號---網路技術修煉,公眾號中總結普及網路基礎知識,包括基礎原理、網路方案、開發經驗和問題定位案例等,歡迎關註。

Linux網路開發者面臨的問題往往比較複雜,因此需要使用一些工具和命令來進行定位和解決。在本篇博客中,我將總結一些常用的Linux網路開發者工具和命令,包括網路包觀測、各層網路狀況快速診斷、網路關鍵統計計數收集、性能診斷、問題復現等方面的命令總結。

 
分類 命令、工具 作用 備註
包觀測

tcpdump

用於抓取網路數據包。通過 tcpdump 命令可以捕獲網路數據包,併進行分析和診斷。

 

wireshark&&tshark

分析網路數據包。

wireshark可視化分析,tshark命令行分析。

tcpflow

用於抓取 TCP 流量並保存到文件。通過 tcpflow 命令可以捕獲 TCP 流量,並將每個 TCP 連接的數據保存到不同的文件中。

比如可以快速將每個連接的包分發到不同文件保存。

ngrep

用於過濾和顯示網路數據包。通過 ngrep 命令可以過濾和顯示滿足特定條件的數據包。

比如快速過濾http GET和POST請求。

快速驗證各層網路情況

ping

用於測試主機之間是否能夠互相通信。通過向目標主機發送 ICMP 報文,可以確定網路連接是否正常。

檢查ip層是否ok。

telnet

用於遠程登錄和測試網路服務。通過 telnet 命令可以遠程登錄主機、測試網路服務是否可用,併進行互動式操作。

檢查tcp握手是否ok。

curl

 

用於從命令行發送 HTTP 請求。通過 curl 命令可以發送 GET、POST 等 HTTP 請求,並查看伺服器返回的響應。

檢查http是否ok。

openssl

OpenSSL 是一個常用的加密工具庫,可以用來實現 SSL/TLS 通信、數字證書簽發和管理、密碼學演算法等功能。

檢查ssl握手情況,證書內容等。

網路路徑狀況查看

traceroute

用於確定數據包從一個主機到另一個主機所經過的路由路徑。

 

mtr

用於網路故障定位和性能分析。mtr 命令可以連續發送 ICMP 報文,併在每一跳的路由器上進行網路延遲和丟包率的統計,用於找出網路故障的根源。

 

網路狀態和計數查看

netstat

用於查看網路連接、路由表、網路介面狀態等信息。通過 netstat 命令可以瞭解當前系統的網路狀況。

 

ss

ss 命令是 netstat 的替代品,用於查看網路連接狀態、監聽埠、網路介面等信息。與 netstat 不同的是,ss 命令提供了更快的速度和更多的選項。

 

ifconfig

用於查看和配置網路介面。通過 ifconfig 命令可以查看網路介面的 IP 地址、MAC 地址、網路狀態等信息。

 
ip

配置和管理網路介面、路由表、ARP 緩存和其他網路相關的屬性。

 

curl cip.cc

查看網路出口地址。

 

ethtool

用於查看和配置網路介面的驅動程式。通過 ethtool 命令可以查看網路介面的狀態、速度、雙工模式等信息,併進行網路性能調優。

 

iftop

用於實時監控網路流量。iftop 命令可以顯示每個網路介面的實時流量、連接數、連接速度等信息,用於快速診斷網路瓶頸和流量異常。

 

nethogs

用於查看進程占用的網路帶寬。通過 nethogs 命令可以查看每個進程占用的網路帶寬、連接數和流量等信息,用於找出網路資源占用高的進程。

 

dns相關

nslookup

用於查詢 DNS 伺服器上的主機名和 IP 地址信息。通過 nslookup 命令可以查看主機名對應的 IP 地址、反向 DNS 解析等信息。

 

dig 

查詢 DNS 伺服器上的主機名和 IP 地址信息。與 nslookup 不同的是,dig 命令提供了更多的選項和功能。  

系統異常查看

dmesg

用於查看內核日誌。通過 dmesg 命令可以查看系統內核的日誌信息,包括硬體檢測、設備驅動載入等信息,用於排查和分析系統硬體和驅動問題。

比如oom、segment fault都可以在這裡面看到相應的記錄。

systemctl

用於管理 systemd 服務。通過 systemctl 命令可以啟動、停止、重啟和查詢 systemd 服務的狀態,用於排查和處理系統服務異常問題。

 

journalctl

用於查看系統日誌。通過 journalctl 命令可以查看系統日誌、過濾日誌信息、按時間戳或者進程名等條件搜索日誌信息,用於排查和分析系統異常和錯誤。

 

記憶體異常

valgrind

檢查程式在運行時的記憶體訪問錯誤、泄漏等問題。 無需修改代碼

asan

可以測常見的記憶體安全問題,例如緩衝區溢出、使用未初始化的記憶體等。  

性能定位

 

top

實時監控系統 CPU、記憶體、進程等資源的使用情況,用於找出系統資源占用高的進程。

看出是用戶態高還是內核態高,是否是io高等。

vmstat

用於顯示系統虛擬記憶體(VM)的使用情況。它提供了對系統記憶體、進程、CPU 等性能數據的實時監控。

可快速看出上下文切換次數。

pidstat

進程級別統計cpu、io、上下文切換等信息。

看出上下文切換中自願切換和非自願切換次數。

sar

監測 CPU 使用率、磁碟 I/O、網路流量、記憶體使用情況、進程活動等多個方面的數據,並將這些數據保存到本地或遠程系統中,以供後續分析和處理。

可快速統計流量。

perf

可以用於測量和分析系統各個方面的性能數據,包括 CPU、記憶體、磁碟、網路等方面的數據。

cpu採樣一把好手,看哪些函數是高頻出現。還可以結合其他工具生成火焰圖。

pprof

用於分析 Go 應用程式性能的工具,可以分析 CPU、記憶體和代碼分佈等方面的性能問題。

go言專用更強大的採樣工具。

strace

用於跟蹤進程的系統調用和信號。

 

bpftrace

動態跟蹤工具,它使用 BPF(Berkeley Packet Filter)技術來實現高效的內核和用戶空間跟蹤功能。

比如打印某個函數的系統調用棧和用戶空間調用棧。本的方式使用ebpf工具。

bcc

基於 BPF(Berkeley Packet Filter)技術的動態跟蹤和性能分析工具集,主要用於 Linux 系統的內核和用戶空間程式分析。

比bpftrace更靈活。

網路場景構造

iptables

用於設置和管理 Linux 內核的防火牆。通過 iptables 命令可以設置網路連接的規則、過濾數據包、進行網路地址轉換等操作。

可以對特定特征進行丟包,轉換。

tc

流量控制、網路流量調度和隊列管理的工具,可用於實現各種 QoS(Quality of Service)和網路流量控制功能

比如對特定流量增加丟包率、時延等。

postman

一款流行的 API 測試工具,可以幫助開發人員快速創建、測試、調試和共用 API。

 
流量複製和重放

goreplay

 

一個 HTTP 實時流量複製工具。支持流量的放大、縮小,頻率限制,還支持把請求記錄到文件,方便回放和分析,也支持和 ElasticSearch 集成。

 

tcpreplay

 

一種 pcap 包的重放工具,它可以將用 ethreal、wireshark工具抓下來的包原樣或經過任意修改後重放回去。它允許你對報文做任意的修改指定重放報文的速度等,這樣tcpreplay 就可以用來複現抓包的情景以定位 bug,以極快的速度重放從而實現壓力測試。

 

tcpcopy

一種請求複製工具 ,通過複製線上數據包,修改 TCP/IP 頭部信息,發送給測試伺服器,達到欺騙測試伺服器的TCP 程式的目的。

 

性能壓測

iperf

用於測試網路帶寬和性能。通過 iperf 命令可以在兩個主機之間進行帶寬測試和性能測試,用於評估網路的實際性能。

適合傳輸層壓測、帶寬壓測等場景。

ApacheBench (ab)

一個基於 Apache HTTP 伺服器的性能測試工具,用於測試 Web 伺服器的負載能力

適合應用層壓測。

wrk

一個高性能的 HTTP 壓力測試工具,支持多線程和支持 Lua 腳本擴展。

 

stress

一個簡單但功能強大的 Linux 壓力測試工具,可以測試 CPU、記憶體、I/O、網路等方面的性能。

 
  在我的公眾號中有一篇文章---怎樣進行問題定位,總結了開發者定位問題的方法論。熟悉工具和命令只能幫我們快速收集信息和對假設做出驗證。除了熟悉工具,更重要的是具備過硬的基礎知識、熟悉代碼流程,並懂什麼時候收集什麼信息,然後將這些命令和工具熟練的應用到工作中。 歡迎關註我的個人技術公眾號:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 根據不同的條件,調用不同的 bean 對象,執行對象中的方法 SpringUtils 工具類 package com.vipsoft.web.utils; import cn.hutool.core.util.ArrayUtil; import org.springframework.aop.fra ...
  • 本系列文章導航 https://www.cnblogs.com/aierong/p/17300066.html https://github.com/aierong/WpfDemo (自我Demo地址) 希望提到的知識對您有所提示,同時歡迎交流和指正 作者:aierong出處:https://www ...
  • 本系列文章導航 https://www.cnblogs.com/aierong/p/17300066.html https://github.com/aierong/WpfDemo (自我Demo地址) 希望提到的知識對您有所提示,同時歡迎交流和指正 作者:aierong出處:https://www ...
  • 安裝 NuGet 包:在 Visual Studio 中打開項目,右鍵單擊項目名稱,選擇“管理 NuGet 包”,搜索“Quartz”並安裝。 創建作業:創建一個實現了 IJob 介面的類,該介面包含一個 Execute 方法,該方法將在作業運行時調用。例如: public class MyJob ...
  • 朋友做網站需要根據城市展示天氣預報,找了一圈沒有找到靠譜的介面,今天在中央氣象臺的官網查詢某個城市找到了介面,先用postman試了一下居然可以使用,可以查詢某個城市7天的天氣預報等信息。但是查詢編碼是氣象臺自己的編碼,在網上搜索了一下居然有這個編碼。本文使用HttpClient方法查詢這個介面。 ...
  • #總覽需求 1. 簡述靜態網頁和動態網頁的區別。 2. 簡述 Webl.0 和 Web2.0 的區別。 3. 安裝tomcat8,配置服務啟動腳本,部署jpress應用。 1、簡述靜態網頁和動態網頁的區別 靜態網頁: 請求響應信息,發給客戶端進行處理,由瀏覽器進行解析,顯示的頁面,靜態網頁包含文本、 ...
  • title: msp430點燈實驗 date: 2023-04-15 15:31:25 description: 基於msp430f5529點燈實驗 一、實驗內容 使用開發板:msp430f5529 使用的LED燈:為開發板上自帶的User LEDs(LED1、LED2) 環境:CCS (Versi ...
  • 一、 yum mysql5.7以下 mysql5.7以上 Centos8 可以,但是需要重新配置文件 可以,但是需要重新配置文件 可以,但是需要重新配置文件 Centos7 可以直接yum,但是是安裝mariadb-server。如果是mysql-server需要配置文件 直接yum後啟動就好 yu ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...