本文章来自我的微信个人技术公众号---网络技术修炼,公众号中总结普及网络基础知识,包括基础原理、网络方案、开发经验和问题定位案例等,欢迎关注。

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、网络等方面的性能。

 
 
在我的公众号中有一篇文章---怎样进行问题定位,总结了开发者定位问题的方法论。熟悉工具和命令只能帮我们快速收集信息和对假设做出验证。除了熟悉工具,更重要的是具备过硬的基础知识、熟悉代码流程,并懂什么时候收集什么信息,然后将这些命令和工具熟练的应用到工作中。
欢迎关注我的个人技术公众号:

linux网络开发者定位问题常用工具和命令总结的更多相关文章

  1. 【转帖】Linux上,最常用的一批命令解析(10年精选)

    Linux上,最常用的一批命令解析(10年精选) https://juejin.im/post/5d134fbfe51d4510727c80d1 写的挺好呢 Linux这么多命令,通常会让初学者望而生 ...

  2. linux基本语法和常用运维命令

    linux上的操作一般是命令行操作,看起来很高大上,让人畏而远之. Help!Help! 忽然间闯入的linux黑黑的世界,怎么办,不要慌.赶紧敲出一个help命令,然后回车,黑色的窗口就会展示一些常 ...

  3. Linux学习笔记:常用100条命令(一)

    linux常用命令 1.关机 shutdown -h now 立刻关机 poweroff shutdown -r now 立刻重启 reboot logout 注销 2.进入图形界面 startx 3 ...

  4. linux常用工具及命令

    1.windows复制文件到linux可以使用工具winscp工具 2.建立软连接命令(将/software/run.log的文件指向/usr/local/logs/中): cd /usr/local ...

  5. linux运维人员常用150个命令汇总

    命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) l ...

  6. Linux上,最常用的一批命令解析(10年精选)

    Linux这么多命令,通常会让初学者望而生畏.下面是我结合日常工作,以及在公司的内部培训中,针对对Linux不是很熟悉的同学,精选的一批必须要搞懂的命令集合.任何一个命令其实都是可以深入的,比如tai ...

  7. Linux下深度学习常用工具的安装

    .Matlab 2015 64bit 的安装 (一)安装包下载 百度网盘: [https://pan.baidu.com/s/1gf9IeCN], 密码: 4gj3 (二)Vmware 使用Windo ...

  8. Linux上,最常用的一批命令解析【10年精选】

    原文链接:https://mp.weixin.qq.com/s/QkqHexs_kOgy_5OwbwyFww 建议点击原文链接查看 不同平台linux客户端连接工具分享: windos终端神器:SSH ...

  9. Linux运维最常用150个命令

    线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list ...

  10. Linux学习笔记:常用100条命令(二)

    linux常用命令 1.vi中复制快捷键 yy --复制 p --粘贴 2.vi中保存退出 ZZ 3.linux解压zip unzip 4.查看软件组包 yum grouplist 5.安装组包 yu ...

随机推荐

  1. openfire开源IM服务器知识分享+社交app实战

    一.      概述 Openfire最主要的功能是实现XMPP服务器,简单来说,openfire为我们提供一个固定的地址,我们只需要向openfire服务器发送标准的XMPP信息(即XML文件流), ...

  2. 导入ssm项目时,项目基本的配置文件

    一.ssm框架基本的配置文件 上面的这些配置文件对于比较简单的ssm项目其实大同小异,逻辑上是差不多的. 在config目录下 在lib下就是各种jar包 二.导入ssm项目后,本地环境配置和项目本身 ...

  3. 第一个Java程序(自动关机程序)

    我的第一个程序 1.新建java工程 打开Eclipse,点击File,选择New,点击Java Project ,新建名为demo的工程,如图所示: 2.编写程序 1.打开demo工程,鼠标右键sr ...

  4. vue iview前端直接上传OSS

    1. 首先安装oss npm install ali-oss --save 2. // template部分 <Upload ref="upload" type=" ...

  5. (三).JavaScript的分支结构和循环结构

    1. 分支结构 1.1 分支语句之单分支 ①.语法: if(值,如果不是布尔值会强制转换成布尔值) { 代码块; } ②.案例: // 案例:如果a变量的值加键盘上输入的数大于100,就打印我爱你二狗 ...

  6. 关于uni-app开发的微信小程序顶部导航条机型适配

    背景: 小程序顶部导航栏那里的样式和功能都是小程序自带的,当我们在pages.json里的pages里新加一条页面配置时,会自动生成一个带顶部导航栏的空白页面,当然也可以再配置里"navig ...

  7. Hive启动留下的RunJar进程不能使用Kill -9 杀不掉怎么办?

    1.问题示例 [Hadoop@master Logs]$ jps 3728 ResourceManager 6976 RunJar 7587 Jps 4277 Master 3095 NameNode ...

  8. 查看Linux内存占用情况

    参考链接: 查看Linux磁盘及内存占用情况 linux的top命令参数详解 1.ps ps aux --sort -rss a     显示所有终端机下执行的进程,包括其他用户的进程(有的进程没有终 ...

  9. element plus按钮点击后不会自动失去焦点的解决方案及Vue3中如何挂载全局函数并在组件中使用

    一.element plus按钮点击后不会自动失去焦点,该如何解决? 在按钮点击点击回调中增加以下代码: event.target.blur() if (event.target.nodeName = ...

  10. linux查看已知进程PID所在的目录

    pwdx 命令 pwdx PID [was@CMTRMWAS1 ~]$ pwdx 31996 31996: /was/AppServer/profiles/AppSrv03