当前位置: 首页 > 科技观察

一篇掌握Linux性能分析网络的文章

时间:2023-03-13 17:45:49 科技观察

广义上讲,网络方向的性能分析不仅包括主机测试的网络配置查看和监控,还包括数据包转发时延、吞吐量、带宽等指标在网络链接上。分析。包括但不限于以下分析工具:ping:测试网络连通性ifconfig:接口配置ip:网络接口统计netsat:各种网络堆栈和接口统计ifstat:接口网络流量监控工具netcat:快速建立网络连接tcpdump:抓包工具sar:统计信息historytraceroute:测试网络路由pathchar:判断网络路径特征dtrace:TCP/IP堆栈跟踪iperf/netperf/netserver:网络性能测试工具perf性能分析神器本文先看第7.pingping发送ICMPecho数据包来检测网络的连通性。除了可以直观的看到网络的连通性之外,还可以获取本次连接的往返时间(RTT时间)、丢包率、访问对应的域名等。IP地址(使用DNS域名解析),例如:我们pingbaidu.com,-c参数指定发送的包数。可以看到某百度服务器的IP地址解析为220.181.112.244。RTT时间的均值和算术平均差分别为40.732ms、40.762ms、40.791ms和0.248。ifconfigifconfig命令用于配置和显示Linux内核中的网络接口统计信息。通过这些统计信息,我们还可以进行一定的网络性能调优。1)ifconfig显示网络接口的配置信息。RX/TXpackets是接收/发送数据包的统计,包括错包、丢包多少等。RX/TXbytes是接收/发送数据字节的统计。还有很多其他的参数,就不一一描述了。性能调优时可以关注MTU和txqueuelen(传输队列长度)。例如,可以使用以下命令微调这两个参数:ifconfigeth0txqueuelen2000ifconfigeth0mtu15002)网络接口地址配置ifconfig也常用于配置网口的地址,例如:配置和删除网卡的IPv6地址:ifconfigeth0add33ffe:3240:800:1005::2/64#配置网卡eth0的IPv6地址ifconfigeth0del33ffe:3240:800:1005::2/64#删除网卡eth0的IPv6地址,修改MAC地址:ifconfigeth0hwether00:AA:BB:CC:dd:EE配置IP地址:ifconfigeth0192.168.2.10ifconfigeth0192.168.2.10netmask255.255.255.0ifconfigeth0192.168.2.10netmask2565.255.155ad812.0bro2.255IPip命令用于显示或设置网络接口等信息、路由、网络设备、策略路由、Linux主机的隧道。它是Linux下一个强大的网络配置工具,旨在替代ifconfig命令。IP命令的威力如下图所示,功能涵盖三个命令:ifconfig、netstat、route。netstatnetstat可以查看整个Linux系统的网络情况,它是一个集多种网络工具于一体的组合工具。常用的选项有以下:default:列出连接的sockets-a:列出所有socket信息-s:各种网络协议栈统计信息-i:网络接口信息-r:列出路由table-l:只列出Listening中的服务状态-p:显示PID和进程名各参数组合使用示例如下:netstat-at列出所有TCP端口netstat-au列出所有UDP端口netstat-lt列出所有监听TCP端口的套接字netstat-lu列出所有监听UDP的套接字portsnetstat-lx列出所有侦听UNIX端口的套接字grepssh找到程序运行的端口netstat-an|grep':80'查找运行在指定端口的进程1)netstat默认显示已连接的套接字数据。总体来说,输出结果包括两部分:ActiveInternetconnections:活跃的TCP连接数,其中Recv-Q和Send-Q指的是接收队列和发送队列,这些数字一般为0,如果不是,则表示请求数据包并返回数据包在队列中累积。ActiveUNIXdomainsockets:活动的UNIX域套接字,其中proto表示连接使用的协议,RefCnt表示连接到这个套接字的进程号,Types是套接字的类型,State是套接字的当前状态,Path是连接进程使用的套接字路径名。2)netstat-i显示网络接口信息接口信息包括网络接口名称(Iface)、MTU,以及一系列接收(RX-)和发送(TX-)指标。其中OK表示成功包,ERR表示错误包,DRP表示丢失包,OVR表示超限包。这些参数帮助我们分析网络的包接收情况,从而判断瓶颈。3)netstat-s显示所有网络协议栈的信息。可以看到,这条命令可以显示每个协议的详细信息,有助于我们对协议栈进行更细粒度的分析。4)netstat-r显示路由表信息这个命令可以查看主机路由表的情况。当然我们也可以使用iproute和route命令来查看路由。该命令显示的信息会更加详细。ifstatifstat主要用于监控主机网口的网络流量。常用的选项有:-a:监控主机的所有网口-i:指定要监控的网口-t:在每行输出信息前加一个时间戳-b:显示流量数据,单位为kbit/s默认KB/s-delay:采样间隔(单位为s),即每隔延迟时间输出统计信息-count:采样次数,即总共输出count统计信息例如,使用如下命令统计流量某段时间内主机所有网口的数据:可以看到分别统计了三个网口的流量数据,前面输出的时间戳帮助我们统计一个网口的总网口数一定时期。输入和输出流。netcatnetcat,简称nc,命令简单但功能强大,在排查网络故障时非常有用。它主要用于建立网络连接。它可以作为客户端和服务器运行。当作为服务器运行时,它负责监听某个端口并接受来自客户端的连接,因此可以用来调试客户端程序;当作为客户端运行时,它负责向服务器发起连接并收发数据,因此也可以用来调试服务器程序。这时候有点像Telnet程序。常用的选项包括:-l:作为服务器运行,监听指定的端口。默认情况下,它作为客户端运行。-k:重复接受并处理一个端口上的所有连接,必须与-l一起使用。-n:对主机使用IP地址而不是主机名,对端口号使用数字而不是服务名称。-p:作为客户端运行时,指定端口号。-s:设置从本地主机发送的数据包的IP地址。-C:使用CR和LF这两个字符作为终止符。-U:使用UNIX本地域套接字通信。-u:使用UDP协议进行通讯,默认为TCP协议。-w:如果nc客户端检测到指定时间内没有输入则退出。-X:当nc客户端与代理服务器通信时,该选项指定它们之间的通信协议。目前支持的代理协议包括“4”(SOCKSv.4)、“5”(SOCKSv.5)和“connect”(HTTPsProxy),默认使用SOCKSv.5。-x:指定IP地址和端口目标代理服务器的编号,这里举个简单的例子,使用nc命令发送消息:首先启动服务器,使用nc-l0.0.0.012345监听12345端口的所有连接,然后启动客户端,使用nc-p1234127.0.0.112345使用1234端口连接到服务器127.0.0.1::12345,然后就可以在两端互相发送数据了,这里只是一个介绍,大家可以多练习例子tcpdumptcpdumptcpdump是一款强大的网络抓包工具,虽然有wireshark等更易用的图形化抓包工具,但tcpdump仍然是网络排查必备的工具,tcpdump的选项有很多,我就不一一列举了一、可以阅读文末的参考资料了解更多,下面是tcpdump的几个常见用法1)抓取数据某台主机的数据包,例如捕获主机200.200上所有接收和发送的数据包。对于主机200.200.200.2或200.200.200.3的通信,使用:tcpdumphost200.200.200.1and(200.200.200.2or)同时抓取主机200.200.200.1除主机200.200.200.2外的IP包。使用:tcpdumpiphost200.200.200.1and!200.200.200.23)捕获主机接收或发送的某种协议类型的数据包。抓取某个端口相关的数据包,比如抓取通过6666端口的数据包,使用:tcpdumpport66665)抓取通过某个网口的数据包,比如抓取通过网口eth0的数据包,使用:tcpdump-ieth0下面是一个例子,抓取TCP三次握手包:(具体的抓包过程,请移步我的公众号进一步了解,那里阅读体验更好,谢谢。)总结:本文总结几个初级网络工具,基本的网络性能分析,结合上面的工具,基本上可以处理,但是对于复杂的问题,上面的工具可能就无能为力了。下面会送出更多高级工具,敬请期待。