TCPDUMP

记一次 TCP 全队列溢出问题排查过程

半腔热情 提交于 2020-12-28 16:01:35
1. 前言 本文排查的问题是经典的TCP队列溢出问题,因TCP队列问题在操作系统层面没有明显的指标异常,容易被忽略,故把排查过程分享给大家。 2. 问题描述 A服务调用B服务接口超时,B服务主机IOWAIT高,具体超时情况分为两种: A服务的请求在B服务日志中可查到,但B服务的响应时间超过了A服务的等待超时时间3S。 A服务的请求在B服务日志中无法查到。 3. 问题分析 此种超时请求集中在很短的一段时间(通常在2分钟之内),过后便恢复正常,所以很难抓到问题现场分析原因,只能搭建测试环境,A服务持续请求B服务,在B服务主机上通过DD命令写入大量数据造成主机IOWAIT高,同时通过TCPDUMP在两端抓包分析。 部分服务超时日志: 服务A:Get http:// xxx &id=593930: net/http: request canceled (Client.Timeout exceeded while awaiting headers) 服务B: "GET xxx&id=593930 HTTP/1.1" 200 64 "-" "Go-http-client/1.1" "-" "-" 165000(单位微秒) 服务A发起请求3S后没有收到服务B响应,断开连接,服务B日志显示处理时长为0.165S,远低于3S,服务A侧看服务B的响应时间为网络传输时间

Linux下TCP延迟确认(Delayed Ack)机制导致的时延问题分析

三世轮回 提交于 2020-12-23 11:35:13
原文: link . 案例一:同事随手写个压力测试程序,其实现逻辑为:每秒钟先连续发N个132字节的包,然后连续收N个由后台服务回显回来的132字节包。其代码简化如下: char sndBuf [ 132 ] ; char rcvBuf [ 132 ] ; while ( 1 ) { for ( int i = 0 ; i < N ; i ++ ) { send ( fd , sndBuf , sizeof ( sndBuf ) , 0 ) ; . . . } for ( int i = 0 ; i < N ; i ++ ) { recv ( fd , rcvBuf , sizeof ( rcvBuf ) , 0 ) ; . . . } sleep ( 1 ) ; } 在实际测试中发现,当N大于等于3的情况,第2秒之后,每次第三个recv调用,总会阻塞40毫秒左右,但在分析Server端日志时,发现所有请求在Server端处理时耗均在2ms以下。 当时的具体定位过程如下:先试图用strace跟踪客户端进程,但奇怪的是:一旦strace attach上进程,所有收发又都正常,不会有阻塞现象,一旦退出strace,问题重现。经同事提醒,很可能是strace改变了程序或系统的某些东西(这个问题现在也还没搞清楚),于是再用tcpdump抓包分析,发现Server后端在回现应答包后

tcpdump抓包工具的使用说明

断了今生、忘了曾经 提交于 2020-12-18 08:48:37
tcpdump抓包工具的使用说明 tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具 tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息 1.看是否安装:which tcpdump yum install -y tcpdump 2. 列出抓包的接口 : tcpdump -D (可以看出我的机器所有可以抓包的网络接口) 3特殊接口 any 可用于抓取所有活动的网络接口的数据包。我们就用如下命令先对 any 接口进行抓包: tcpdump -i any 4. -c 选项可以用于限制 tcpdump 抓包的数量: tcpdump -i any -c 5 (抓取少量包进行分析时需要这样) 5。上边的示例默认将ip地址和端口号解析为对应的接口名以及服务协议名称,而在通常的网络故障排查中使用ip地址和端口号更加利于分析问题:用-n显示ip地址 ,-nn显示端口号。: tcpdump -i any -c5 -nn 6. 理解抓取的报文: 第一个字段:抓取数据的时间 ip是网络层协议类型 192.168.43.ssh是源ip和协议(如果用-nn)显示的就是端口号,后边跟着的是目的ip和端口后边是TCP报文标记段

Linux运维跳槽面试精华题|第三集

拟墨画扇 提交于 2020-12-17 00:01:14
作者:运维派 来源:http://www.yunweipai.com/archives/27983.html 21、统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip cat access.log | awk ‘{print $1}’ | uniq -c | sort -rn | head -10 22、使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log tcpdump ‘host 192.168.1.1 and port 80’ > tcpdump.log 23、如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1 iptables -A PREROUTING -d 192 .168 .2 .1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192 .168 .2 .1 :8080 24、简述raid0 raid1 raid5 三种工作模式的工作原理及特点 RAID 0 :带区卷,连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率 但它没有数据冗余,RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证 而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0

Linux运维跳槽面试精华题|第四集

最后都变了- 提交于 2020-12-16 10:11:20
作者:运维派 来源:http://www.yunweipai.com/archives/27983.html 31、你常用的Nginx模块,用来做什么 rewrite模块,实现重写功能 access模块:来源控制 ssl模块:安全加密 ngx_http_gzip_module:网络传输压缩模块 ngx_http_proxy_module 模块实现代理 ngx_http_upstream_module模块实现定义后端服务器列表 ngx_cache_purge实现缓存清除功能 32、请列出你了解的web服务器负载架构 Nginx Haproxy Keepalived LVS 33、查看http的并发请求数与其TCP连接状态 netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ 还有ulimit -n 查看linux系统打开最大的文件描述符,这里默认1024 不修改这里web服务器修改再大也没用,若要用就修改很几个办法,这里说其中一个: 修改/etc/security/limits.conf soft nofile 10240 hard nofile 10240 重启后生效 34、用tcpdump嗅探80端口的访问看看谁最高 tcpdump -i eth0 -tnn dst port 80 -c 1000

协议有哪些相关面试题?Linux运维入门学习

痞子三分冷 提交于 2020-12-11 23:52:25
  学习Linux运维技术的人们越来越多,很多人都想着通过学习Linux技术来进入到it互联网行业。那么对于网络协议这一项内容,有哪些重点问题是学习Linux运维技术需要注意的?协议有哪些相关面试题?   2 填空   2.1 dns使用的是()协议,http使用的是()协议。ftp使用的是()协议,smtp使用的是()协议。   2.2 当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置_。   2.3 邮件发送通过——协议实现,邮件接收通过——协议实现   2.4 IPSAN网络架构中内部使用的协议TCP/IP协议()   2.5 在TCP协议中,采用端口号来区分不同的应用进程()   2.6 TCP协议传输数据包的速度一般比UDP协议传输速度慢()   2.7 在TCP/IP中,**层和层之间的区别是最为关键的;__层提供点到点的服务,而**层提供端到端的服务   2.8 VIP协议的三种模式;_;__   3 简答   3.1 如何使用tcpdump命令嗅探源地址112.222.16.25目的端口是80端口的数据包(写出具体命令)   3.2 使用tcpdump监听主机IP为192.168.1.3,tcp端口为3306的数据,写出相应命令。   3.3 请列出osi七层模型,你知道每层对应的协议都有哪些?   3.4

(四)深入浅出TCPIP之TCP三次握手和四次挥手(下)的抓包分析

两盒软妹~` 提交于 2020-12-05 15:11:46
目录 1. 通过netstat来分析服务器和客户端的TCP状态 2.通过tcpdump抓包分析服务器和客户端的TCP状态 2.1 语法 2.2 抓包返回格式 2.3 抓包的FLags标记 2.4 分析三次握手,数据收发,四次挥手的状态 2.4.1三次握手 2.4.2数据发送 2.4.3 四次挥手 专栏其他文章: 理论篇: (一)深入浅出TCPIP之理解TCP报文格式和交互流程 (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上) (三)深入浅出TCPIP之再识TCP,理解TCP四次挥手(上) (四)深入浅出TCPIP之TCP三次握手和四次挥手(下)的抓包分析 (五)深入浅出TCPIP之TCP流量控制 (六)深入浅出TCPIP之TCP拥塞控制 (七)深入浅出TCPIP之深入浅出TCPIP之TCP重传机制 (八)深入浅出TCPIP之TCP长连接与短连接详解 (九)深入浅出TCPIP之网络同步异步 (十)深入浅出TCPIP之网络阻塞和非阻塞 (十一)深入浅出TCPIP之TCP粘包问题 (十二)深入浅出TCPIP之Nagle算法 (十三) 深入浅出TCPIP之TCP套接字参数 (十四)深入浅出TCPIP之初识UDP理解报文格式和交互流程 (十五)非常全面的TCPIP面试宝典-进入大厂必备总结 (十六)深入浅出TCPIP之Hello CDN .... (二十

在鸿蒙设备上运行TFTP服务器,实现文件上传、下载、保存

为君一笑 提交于 2020-11-30 12:09:51
昨天唐老师发布了能够运行在鸿蒙Hi3861开发板上的Python解释器,还不知道的可以去看看唐老师的帖子,:-) 我们知道,Python是一种脚本语言,可以解释执行,不需要编译。有了Python解释器,大家可能会希望——如果能直接把Python脚本文件上传到开发板上,然后发个命令就可以执行就好了,而不需要像C代码那样需要编译、烧录 才能运行。 于是,我开始尝试—— 将TFTP服务器移植到鸿蒙Hi3861开发板上 。经过半天的移植和一天的调试,终于把TFTP服务器在Hi3861上移植成功了。 没错,在内存352KB、闪存2M 的Hi3861开发板上成功运行了一个TFTP服务器,你可以将PC上的文件上传到开发板上,而且可以断电持久保存!当然,你上传的文件不能太大。 以下是整个移植和调试过程中的关键过程记录。 TFTP是什么? TFTP是简单文件传输协议 Trivial File Transfer Protocol的英文缩写。 TFTP是基于UDP的,协议本身比较简单,它的RFC 1350官方文档也只有11页(TCP的RFC 793文档有85页)。 如果大家如果有兴趣,完全可以自己从零实现一个;而我为了能够快速验证在Hi3861的可行性,选择了直接移植。 TFTP服务器实现了哪些功能? 已经实现了TFTP该有的功能: 1. 支持文件上传; 2. 支持文件下载; 3. 支持文件持久保存

网络抓包工具 wireshark 入门教程

我是研究僧i 提交于 2020-11-29 13:50:11
<div id="article_content" class="article_content csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post"> <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/htmledit_views-0a60691e80.css"> <div class="htmledit_views"> <p style="margin-bottom:0px;padding-top:5px;padding-bottom:5px;color:rgb(0,0,0);font-family:'Microsoft YaHei', '微软雅黑', helvetica, arial, verdana, tahoma, sans-serif;font-size:15px;letter-spacing:1px;text-align:left;background-color:rgb(255,255,255);">Wireshark(前称Ethereal)是一个网络数据包分析软件。网络数据包分析软件的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包数据

解决Linux内核问题实用技巧之-dev/mem的新玩法

左心房为你撑大大i 提交于 2020-11-28 08:41:56
原创 dog250 Linux阅码场 2019-11-20 接着上一篇文章《解决Linux内核问题实用技巧之 - Crash工具结合/dev/mem任意修改内存》继续,本文中,我们来领略几种关于/dev/mem的玩法。 /dev/mem里有什么 简单来讲,/dev/mem是系统物理内存的映像文件,这里的 “物理内存” 需要进一步解释。 物理内存是指我们插在内存槽上的内存条吗?当然是,但物理内存不单单指内存条。 物理内存严格来讲应该是指 物理地址空间 ,内存条只是映射到这个地址空间的一部分,其余的还有各种PCI设备,IO端口等。我们可以从/proc/iomem中看到这个映射: [root@localhost mem]# cat /proc/iomem 00000000-00000fff : reserved 00001000-0009fbff : System RAM 0009fc00-0009ffff : reserved 000c0000-000c7fff : Video ROM 000e2000-000ef3ff : Adapter ROM 000f0000-000fffff : reserved 000f0000-000fffff : System ROM 00100000-31ffffff : System RAM 01000000-01649aba : Kernel