目录
一、网络IO模型
二、磁盘集群(DRBD)
三、数据通过磁盘集群进行回写
四、普通文件的IO调度
五、网络知识
5.1 路由表
5.2 网络分类
5.3 地址段
5.4 VLAN网络传输
5.5 路由
5.6 网络传输
5.6.1 OSI 七层网络协议编辑
六、网络分析诊断
6.1 网络诊断的初步排查 -- ping命令
6.2 ifconfig -- 认识Linux本身的网卡
6.3 netstat -- 网络分析
6.4 tcpdump命令 -- Linux抓取网络数据包
6.5 wireshark
6.6 route -- 查看路由表信息
6.7 网络问题定位
参考下述两个链接:
参考下述两个链接:
如上图,网络传输协议栈(通过网卡) --> 网络是否有问题,导致B是否收到 --> 有无发消息回A,通过磁盘集群,网络同步传输的过程,将数据A回写到B,这么一个过程。
与磁盘集群回写,两者之间的差异是,除去集群B,单个通讯流程是一致的。
IO分析的三种情况:
如果程序A,10M/s 进行IO请求,首先通过网络层传输
异常情况:在网络层进队列,等待,丢包等情况【在分析的时候,需要考虑网络层是否限流】
实现PC1与PC2之间的通讯。
如上图,192.168.31.101/24 24 代表掩码 子网掩码:255.255.255.0
主机地址: 192.168.122.0 可以分多少个IP地址? 2**8 - 2 (0,255保留,可分配254个IP地址)
192.168.122.4/27、192.168.122.39/27 不配路由的情况下,这两个地址不可达
子网掩码的作用:当IP地址不够用的情况下,可以通过掩码的形式将网络进行分离
同一个IP段,通过掩码将网络隔离开来。一根网线,通过组网的形式,将各个办公室网络进行隔离,互不干扰。提供掩码隔离,提高网络利用率。
LAG链路聚合(类似于将2块网卡合并成一块新的网卡),链路聚合是在两个设备间使用多个物理链路创建一个逻辑链路的功能,这种方式允许物理链路间共享负载。网卡1G,通过LAG可以处理2G甚至更大的网络传输
静态路由(点对点的网络传输) 【命令:ip r s】
是指用户或网络管理员手工配置的路由信息当网络拓扑结构或链路状态发生改变时,需要网络管理员手工配置静态路由信息
是一种特殊的静态路由,当路由表中与数据包目的地址没有匹配的表项时,数据包将根据默认路由条目进行转发,默认路由在某些时候是非常有效的,例如在末梢网络中,默认路由可以大大简化路由器的配置,减轻网络管理员的工作负担
路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整。当网络中节点或节点间的链路发生故障,或存在其它可用路由时,动态路由可以自行选择最佳的可用路由并继续转发报文
网络请求(收包、发包、转发等),网络传输,重点需要排查网络问题(防火墙)
数据链路调用情况:
系统过来一个数据包(请求),系统调用之前,不管是发包还是收包,都会产生si ---> 内核接口 --->网络协议栈(TCP、UDP协议) 以及 ip_tables 内核模块 ---> 网络层(IP) ---> 网络接口层 --->设备驱动。
用户层除了包括系统发出的请求(数据包),还存在很重要的iptables 命令,如果请求在防火墙已经被拦截,就不会去调用内核接口。
网络传输慢,需要去分析哪里慢?
了解网络传输的过程:A 通过网络传输发送网络请求,B收到网络请求,B处理请求,B通过网络传输回应请求,A收到B处理结束的请求。那么是A发送慢了? 还是B接收慢了? 还是网络传输慢了? 从这方面去展开分析......
一次ping的过程中,会有哪些操作,通过tcpdump命令进行分析:
tcpdump -nn -i eth0 icmp
除了通过ifconfig来分析网卡,也可以通过 sar 查看实时的网络情况:
netstat -anp | grep http,该命令反应以下信息点:
netstat -nat | awk '{print $6}' | sort | uniq -c | sort -rn # 分析网络连接状态
抓到的包,可以用wireshark工具来进行查看和分析。
wireshark,网络里面有一位(flags)标签表示可以分片
ethtool eth0 # 查看网卡
1000Mb的网卡,10Mb的带宽,最多能处理的网络传输是多少?
理论上能处理最大的上下行为: 10Mb/8 = 1.25MB byte(还需要 进行bit 换算成 byte)。在这种情况下,1000Mb的网卡,只能达到1.25MB的带宽利用
特例:对外是否有禁止的端口,ip,服务(系统设置,防火墙设置),及网络流量的波动性,tsar 回溯。
网络连接问题(a 请求并链接 b):
平均响应时间大,TPS很低(网络方面的分析):
机器a 和机器b 发送消息都很快,在网络传输上花了很多的时间(接收时间比较长):
机器a: 发送请求 机器b: 接收请求并回复
通过节点传输上、网络进行优化。比如从路由的转发和CDN加速的技巧,traceroute。
机器a 和 机器b 发送消息的时候就已经很慢,什么原因:
可能是系统问题 & 程序问题 & 资源问题,也可能是cpu满了,queue 满了,网卡限速等问题
网络资源占用率高,怎么排查问题:
网络长连接与短连接的区别:
看是否会断开,如银行业务。从安全系数来理解,长连接更差。区别如下:
短连接:连接 ---》传输 ---》断开 【如网站请求】
长连接:连接 ---》传输 ---》保持 ..... ---》传输... ---》直到主动断开关闭 【DB】
监控集群:可以通过普罗米修斯进行集群监控。