
linux
文章平均质量分 83
damanchen
这个作者很懒,什么都没留下…
展开
-
Linux 网络包收发流程及缓冲区问题
网络包的接收流程当一个网络帧到达网卡后,网卡会通过 DMA 方式,把这个网络包放到收包队列中;然后通过硬中断,告诉中断处理程序已经收到了网络包。接着,网卡中断处理程序会为网络帧分配内核数据结构(sk_buff),并将其拷贝到 sk_buff 缓冲区中;然后再通过软中断,通知内核收到了新的网络帧。接下来,内核协议栈从缓冲区中取出网络帧,并通过网络协议栈,从下到上逐层处理这个网络帧:在链路层检查报文的合法性,找出上层协议的类型(比如 IPv4 还是 IPv6),再去掉帧头、帧尾,然后交给网络层。网原创 2021-07-11 11:49:56 · 1657 阅读 · 1 评论 -
numa总结
文章目录numa架构是啥numa的由来numa带来的问题redis 在NUMA架构上出现问题的过程解决方案为什么Interleave的策略就解决了问题?numa架构是啥NUMA(Non-Uniform Memory Access)服务器的基本特征是具有多个CPU模块,每个CPU模块由多个CPU(如4个)组成,并且具有独立的本地内存、I/O槽口等。由于其节点之间可以通过互联模块(如称为Crossbar Switch)进行连接和信息交互,因此每个CPU可以访问整个系统的内存(这是NUMA系统与MPP系统的重原创 2021-06-18 19:58:04 · 1336 阅读 · 0 评论 -
结合 tcprstat 和tcpdump、wireshark 工具定位Redis响应慢的原因
文章目录一、背景说明二、工具说明2.1 tcprstst2.2 tcpdump2.3 Wireshark三、使用步骤3.1 使用 tcpdump 进行抓包3.2 使用 tcprstat 进行时延探测记录3.3 使用 Wireshark 对包进行分析四、总结一、背景说明之前使用过 tcpdump / wireshark,线上也有时延探测工具 tcprstat,但是一直感觉差点意思,每次抓包或者看响应时间,都对不上号,不能较好的定位问题。知道机缘巧合发现了这个改良后的 tcprstat,如获至宝,经验证后原创 2021-04-30 19:06:19 · 1114 阅读 · 2 评论 -
字节序、大端字节序(Big Endian)、小端字节序(Little Endian)总结
什么是字节序?字节序,简单来说,指的是 超过一个字节的数据类型在内存中存储的顺序有几种字节序?大端字节序(Big Endian)高位字节数据存放在内存低地址处,低位字节数据存放在内存高地址处。小端字节序(Little Endian)高位字节数据存放在内存高地址处,低位数据存放在内存低地址处。如上图所示,int32类型的数值 12345678用一个字节表示不了,需要用到4个字节,也就有了字节序的问题。数值 12345678(一千两百三十四万五千六百七十八),这里的最高位数据就是1,最低位数据原创 2021-01-10 10:13:55 · 19904 阅读 · 4 评论 -
Golang中 int int8 int16 int32 int64的区别和取值范围
先说结论吧,方便快速查询验证。总结区别int 类型大小为 8 字节int8 类型大小为 1 字节int16 类型大小为 2 字节int32 类型大小为 4 字节int64 类型大小为 8 字节go语言中的int的大小是和操作系统位数相关的,如果是32位操作系统,int类型的大小就是4字节; 如果是64位操作系统,int类型的大小就是8个字节取值范围int8: -128 ~ 127int16: -32768 ~ 32767int32: -2147483648 ~ 214原创 2021-01-08 19:19:47 · 22606 阅读 · 1 评论 -
Linux如何查看某个进程收发包的数量
工作中定位排查一些问题,记录在此,积累经验。背景简述有两台机器之间网络不佳,影响上面的主从服务同步。使用ping命令简单测试之后发现,同一AZ(可用区)下的时延竟然有100多ms,正常情况下应该在1ms以内。之前没遇到过这样的情况,联系网络组的同事,通过监控发现两台机器的pps(Packet Per Second)很高,超过限制,被限流了,所以这两台机器之间的时延很大。那怎么找到造成pps升高的进程呢?实操小结使用iftop -P命令,可以看到机器上各个端口之间的流量情况,可以定位到对应的进程原创 2020-11-29 22:57:59 · 6198 阅读 · 1 评论 -
tmux linux后台管理工具快速使用指南
常用操作新建tmux new -s demo# 新建一个名称为demo的会话断开当前会话使用快捷键组合先按Ctrl+b, 再按d,就可以断开当前会话。进入之前的会话tmux a# 默认进入第一个会话tmux a -t demo# 进入到名称为demo的会话关闭会话tmux kill-session -t demo# 关闭demo会话tmux kill-server# 关闭所有会话查看所有的会话tmux list-session# 查看所有会话tmux ls# 查看所有会话,提倡使用原创 2020-10-30 19:56:45 · 255 阅读 · 0 评论