分类:Linux

28 篇文章

【TCP】BBR拥塞控制算法
传统的拥塞控制算法是以丢包为驱动的拥塞控制算法,其实还有一种以带宽测量为驱动的谷歌(2016年提出的) BBR 拥塞控制算法。 我们先来看一个问题,大管道向小管道传输数据引发拥堵: 图中: 发送方的管道流量非常的大,但是瓶颈路由器向接收方发送的管道却是非常的窄。所以一定就会导致大量的报文积压等待在发送方的管道,实际上从很窄的瓶颈路由线路出来以后,虽…
【TCP】拥塞控制
由于 TCP 协议向应用层提供不定长的字节流发送方法,使得 TCP 协议先天性的就有意愿去占满网络中的整个带宽。但是当网络中许多 TCP 连接同时试图去占满整个带宽的时候,就有可能发送恶行拥塞事件。 TCP 的拥塞控制算法能够有效的降低网络中的拥塞,提升所有 TCP 连接的发送速度。 慢启动 拥塞窗口 cwnd (congestion window…
【Linux】进程、线程和协程
进程的定义 进程就是程序动态运行的实例,它是承担分配系统资源(CPU时间,内存)的实体。我们也可以把进程当成是由一组元素组成的实体,进程的两个基本的元素时程序代码和与代码相关联的数据集合。在进程执行时,都可以被表征为一下元素: 标识符:与进程相关的唯一标识符,用来区别正在执行的进程和其他进程。 状态:描述进程的状态,因为进程有挂起,阻塞,运行等好几…
【Linux】网络编程 – 多路复用
为什么要学IO学多路复用 为了解决:C10K、C100K (TPS|QPS) 等性能问题。 在多连接的情况下,处理速度的快与慢就决定了技术怎么去选型。 服务端|客户端 既然多路复用就是为了解决多连接情况下的性能问题,那么我们先来看一下建立一个连接都要经过哪些过程。 strace 追踪 strace 是一个可以抓取程序与操作系统之间的交互信息及调用了…
【TCP】为什么三次握手四次挥手
关于 TCP 三次握手四次挥手的过程已在 【网络通信】传输控制层 – TCP 协议介绍,这里将不再赘述。 TCP 连接到断开过程,如下图: 三次握手 TCP 的定位是全双工的、支持半关闭的、可靠的传输协议。但是,我们知道,网络信道是不可靠的,随时都有可能丢包、错包、乱序。TCP 怎么在不可靠的网络上实现可靠的传输协议呢? 对于丢包,TCP 的解决方…
【OSI】网络层 – IP 协议
网络层 - IP协议 网际协议(英语:Internet Protocol,缩写:IP;也称互联网协议)是用于分组交换数据网络的一种协议。 先来看一下本机的IP配置信息: vi /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-eth0 : 其中的 if 表示interface 接口;cfg 表示conf…
【OSI】传输控制层 – TCP 协议
TCP 为了搞清楚TCP是什么,先来看一下它的定义: 传输 控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 注: 上图中的 connect()、listen()、write()、read()、close() 均是系统调用方法。 TCP三次握手 TCP …
【OSI】应用层 – HTTP 协议
谈到网络通信就不得不提下面两点: OSI 7 层参考模型 TCP/IP 协议 OSI 7 层参考模型 这只是个参考模型,具体实现的时候已将 表示层及会话层归纳到了 应用层。 TCP 协议就在传输控制层。 4层(或5层) 分层其实是软件工程学中常见的实现方式,因为分层具备解耦,每个层实现自己该办的事情。层与层之间只要接口稳定,层内的东西可以替换,可以…
【Linux】内核态后端调试神器strace
strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 参数说明 -c 统计每一系统调用的所执行…
基于Openresty+ELKF的日志平台搭建
没有做日志记录的线上系统,绝对是给系统运维人员留下的坑。尤其是前后端分离的项目,后端的接口日志可以解决对接、测试和运维时的很多问题 基于OpenResty的日志记录 OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。 1、OpenResty 安装 在安…