一些基本引言的知识点

2023-11-12

一些基本引言的知识点

  1. ⻦哥在 PHP7 中 把 HashTable 结构体从 72 字节压缩到了 56 字节,表⾯看起来不⼤的优化,实际上是成倍的性能提醒。因为 CPU 在向内存要数据的时候是以 Cache Line 为单位进⾏的,⼀个 Cache Line 是 64 字节。56 字节可以⼀次请求搞定,⽽原来的 72 字节则需要两次。另外就是 L1/L2/L3 的命中率也会提升很多,这个对性能的帮助更⼤。

  2. kafka为什么快?

    • 顺序读写

    • Memory Mapped Files(mmap),工作原理是直接利用操作系统的 Page 来实现文件到物理内存的直接映射,完成映射之后你对物理内存的操作会被同步到硬盘上(操作系统在适当的时候Async,操作系统会在程序主动调用 Flush 的时候才把数据真正的写到硬盘Sync)。

    • 基于 Sendfile 实现Zero Copy,传统 Read/Write 方式进行网络文件传输的方式,硬盘—>内核 buf—>用户 buf—>Socket 相关缓冲区—>协议引擎,当消费者需要数据的时候 Kafka 直接把文件发送给消费者,配合 mmap 作为文件读写方式,直接把它传给 Sendfile

    • 批量压缩,系统的瓶颈不是 CPU 或磁盘,而是网络 IO

      总结:Kafka 速度的秘诀在于,它把所有的消息都变成一个批量的文件,并且进行合理的批量压缩,减少网络 IO 损耗,通过 mmap 提高 I/O 速度。

      写入数据的时候由于单个 Partion 是末尾添加,所以速度最优;读取数据的时候配合 Sendfile 直接暴力输出。

  3. 负载均衡SLB:基于DNS负载均衡、基于硬件负载均衡、基于软件负载均衡

系统调优你所不知道的TIME_WAIT和CLOSE_WAIT

什么是TIME-WAIT和CLOSE-WAIT?

大家知道,由于socket是全双工的工作模式,一个socket的关闭,是需要四次握手来完成的。

  • 主动关闭连接的一方,调用close();协议层发送FIN包
  • 被动关闭的一方收到FIN包后,协议层回复ACK;然后**被动关闭的一方,进入CLOSE_WAIT状态,**主动关闭的一方等待对方关闭,则进入FIN_WAIT_2状态;此时,主动关闭的一方 等待 被动关闭一方的应用程序,调用close操作
  • 被动关闭的一方在完成所有数据发送后,调用close()操作;此时,协议层发送FIN包给主动关闭的一方,等待对方的ACK,被动关闭的一方进入LAST_ACK状态
  • 主动关闭的一方收到FIN包,协议层回复ACK;此时,主动关闭连接的一方,进入TIME_WAIT状态;而被动关闭的一方,进入CLOSED状态
  • 等待2MSL时间,主动关闭的一方,结束TIME_WAIT,进入CLOSED状态

结论:

  1. 主动关闭连接的一方 - 也就是主动调用socket的close操作的一方,最终会进入TIME_WAIT状态

  2. 被动关闭连接的一方,有一个中间状态,即CLOSE_WAIT,因为协议层在等待上层的应用程序,主动调用close操作后才主动关闭这条连接

  3. TIME_WAIT会默认等待2MSL时间后,才最终进入CLOSED状态;

  4. 在一个连接没有进入CLOSED状态之前,这个连接是不能被重用的!

    MSL不同系统的默认值

    • Windows : MSL = 2 min
    • linux(Ubuntu, CentOs) : MSL = 60s
    • Unix : MSL = 30s

    一台主机上只能保持最多 65535 个 TCP 连接吗?

    • 是四元组(源IP,源PORT,目标IP,目标PORT),在一台主机上,只要这个四元组不重复

    • 文件描述符

    • 系统资源(主要是内存)

Socket连接到底是个什么概念?

socket就是一个 五元组,包括:

  1. 源IP
  2. 源端口
  3. 目的IP
  4. 目的端口
  5. 类型:TCP or UDP

第二个问题,TIME_WAIT有什么用?

就是为了解决网络的丢包和网络不稳定所带来的其他问题

  • 重用:前面一个连接上的数据被后面的一个连接错误的接收
[xielianjun@set-xr-mdm-schedule-test01 ~]$ netstat -a | grep TIME_WAIT | wc -l 
44

RTO RTT

  1. RTT(Round Trip Time):一个连接的往返时间,即数据发送时刻到接收到确认的时刻的差值;
  2. RTO(Retransmission Time Out):重传超时时间,即从数据发送时刻算起,超过这个时间便执行重传, RTO协议实现值最小1s

RTT 和 RTO 的关系是:由于网络波动的不确定性,每个RTT都是动态变化的,所以 RTO 也应随着 RTT 动态变化。

作者:小宇渣渣渣

为何客户端突然出现大量TIME_WAIT堆积

问题场景:原来客户端直接访问后端Web服务器,TIME_WAIT数量非常少。现在引入了7层SLB来实现对后端服务器的负载均衡。客户端SLB访问后端服务器,但是发现客户端的TIME_WAIT状态的socket很快累积到4000多个,并且客户反映没有修改任何内核参数。

解决方案

  • 比较优雅的方法是使用TCP长连接来代替短连接。

  • HTTP 请求 connection 参数,一般都设置为 `keep-alive,禁止服务端断开

  • 缩减 time_wait 时间,设置为 1 MSL(即,2 mins)

问题分析

大量的 TIME_WAIT 状态 TCP 连接存在,其本质原因是什么?

  • 大量的短连接 存在
  • 特别是 HTTP 请求中,如果 connection 头部取值被设置为 close 时,基本都由「服务端 」发起主动关闭连接
  • 而,TCP 四次挥手关闭连接机制中,为了保证 ACK 重发丢弃延迟数据,设置 time_wait 为 2 倍的 MSL(报文最大存活时间)

TIME_WAIT 状态:

  • TCP 连接中,主动关闭连接 的一方出现的状态;(收到 FIN 命令,进入 TIME_WAIT 状态,并返回 ACK 命令)

  • 保持 2 个 MSL 时间,即,4 分钟;(MSL 为 2 分钟)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一些基本引言的知识点 的相关文章

  • 计算机原理UART,一文看懂串口服务器的原理及用法

    串口服务器 xff0c 也被成为串口到以太网转换器 串口设备服务器 它是终端服务器通过TCP IP服务器的串口进行数据传输 xff0c 然而所有这些名称都是相同类型的设备 xff0c 基本是将串行的RS232 RS485或RS422接口链接
  • 计算机组成原理知识点梳理(一)

    注 所学教材为 计算机组成原理 第二版 唐朔飞 编著 本次梳理涵盖内容为 第一章 计算机系统概论 1 1 计算机系统简介 1 2 计算机的基本组成 参考内容以及图片来源为书本和csdn博文 第一章 计算机系统概论 1 1 计算机系统简介 计
  • GCC编译过程,了解编译原理

    说明 这篇文件是在读 程序员的自我修养 链接 装载与库 的一点笔记 权当时学习的记录 1 GCC编译过程分解 以HelloWorld程序为例 2 预编译 规则 命令 gcc E XXX c o XXX i 3 编译 词法分析 语法分析 语义
  • tcp三次握手

    在TCP IP协议中 TCP协议提供可靠的连接服务 采用三次握手建立一个连接 第一次握手 建立连接时 客户端发送syn包 syn j 到服务器 并进入SYN SEND状态 等待服务器确认 第二次握手 服务器收到syn包 必须确认客户的SYN
  • TCP、UDP、HTTP、SOCKET之间的区别

    IP 网络层协议 TCP和UDP 传输层协议 HTTP 应用层协议 SOCKET TCP IP网络的API TCP IP代表传输控制协议 网际协议 指的是一系列协议 TCP和UDP使用IP协议从一个网络传送数据包到另一个网络 把IP想像成一
  • 计算机原理-数据

    数据 二进制 十进制 人类use 十六进制 2 4 16 是权 1011 011 2 3 0 2 2 2 1 2 0 0 2 1 1 2 2 1 2 3 8 0 2 1 0 0 25 0 125 27 375 七进制转十进制 权不一样 60
  • 移动文件命令

    echo off set n 0 checkfile if not exist E agent jar agent n jar move E datacloudWorkspace agent javarasp 1 0 target agen
  • x86 细探:为什么要把迁移到 64 位 linux 称之为 x86 迁移

    一 引言 我们部门最近在把有些项目从原来的 AIX 平台迁移到 Linux 平台上 老大把这个项目自然而然的命名为了 x86 迁移 今天的我仔细思忖着这个名字 突然有些疑惑 x86 不是 32 位的吗 而我们迁移的目标系统是 64 位的 为
  • 计算机原理---127.0.0.1是什么

    127 0 0 1究竟什么意思 简介 连接上因特网的每一台计算机都会有一个IP地址 在linux下可以使用命令ifconfig来查看本机的ip地址 windows为ipconfig 而127 0 0 1被称为本地环回地址 loopback
  • 机器数——源码、反码、补码

    机器数 源码 反码 补码 基本定义 1 机器数是将符号 数字化 的数 是数字在计算机中的二进制表示形式 表示一个机器数 应该考虑以下三个因素 1 机器数的范围 2 机器数的符号 3 机器数中小数点的位置 我们这里只讨论二进制整数在计算机中的
  • SISD、MIMD、SIMD、MISD计算机的体系结构的Flynn分类法

    1 计算平台介绍 Flynn于1972年提出了计算平台的Flynn分类法 主要根据指令流和数据流来分类 共分为四种类型的计算平台 如下图所示 单指令流单数据流机器 SISD SISD机器是一种传统的串行计算机 它的硬件不支持任何形式的并行计
  • 原码反码补码:计算机整数的运算为啥用补码?运算过程举例理解

    原码 反码 补码基本知识 正整数 原码 反码 补码均是原码本身 负整数 反码 原码按位取反 符号位除外 补码 反码 1 例如 byte 1 原码 0000 0001 反码 0000 0001 补码 0000 0001 byte 3 原码 1
  • GET和POST之间的主要区别

    1 GET是从服务器上获取数据 POST是向服务器传送数据 2 在客户端 GET方式在通过URL提交数据 数据在URL中可以看到 POST方式 数据放置在HTML HEADER内提交 3 对于GET方式 服务器端用Request Query
  • 计算机原理-结构组成

    cpu 中央处理器 程序控制 操作控制 时间控制 数据处理 运算器 算数逻辑单元ALU 逻辑运行 累加计算器AC 为alu提供工作区 数据缓存寄存器 DR 暂存指令和数据 状态条件寄存器PSW 保存指令条件码 控制器 程序计数器PC 指令计
  • 一些基本引言的知识点

    文章目录 一些基本引言的知识点 系统调优你所不知道的TIME WAIT和CLOSE WAIT 一些基本引言的知识点 哥在 PHP7 中 把 HashTable 结构体从 72 字节压缩到了 56 字节 表 看起来不 的优化 实际上是成倍的性
  • 内存管理之一__align字节对齐

    转 http www cnblogs com ye moooooo p 4601189 html 一 什么是字节对齐 为什么要对齐 现代计算机中内存空间都是按照byte划分的 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始 但实际情
  • 【学习笔记】数据存储的顺序与对齐_计算机原理

    学习笔记 数据存储的顺序与对齐 计算机原理 开了个新坑 做一个计算机原理的读书笔记 自用 仅做分享 数据存储的顺序 介绍了机器端模式 数据存储的对齐 这里介绍的是 数据结构的存储方式是根据给定的字节和自己本身的字节做对齐的 比如 4 4 4
  • 文件传输协议FTP与TCP/IP协议之间有什么关系

    TCP IP协议是目前网络所采用的一种框架协议 包括五层 应用层 传输层 网络层 链路层 物理层 FTP协议是TCP IP协议的一部分 严格意义上来说是应用层协议 FTP是一种应用程序 基于TCP IP协议 它定义了本地登录户机与远程服务器
  • 计算机数据的存储-编码(补码,移码)

    在计算机系统中 补码是最重要的编码 数值一律用补码来表示 存储 主要原因 使用补码 可以将符号位和其它位统一处理 同时 减法也可按加法来处理 另外 两个用补 码表示的数相加时 如果最高位 符号位 有进位 则进位被舍弃 2 补码与原码的转换过
  • 各种协议

    百度百科http baike baidu com view 16603 htm fromtitle E8 AE A1 E7 AE 97 E6 9C BA E7 BD 91 E7 BB 9C E5 8D 8F E8 AE AE fromid

随机推荐

  • 会话列表

    java实现 题目描述 小云正在参与开发一个即时聊天工具 他负责其中的会话列表部分 会话列表为显示为一个从上到下的多行控件 其中每一行表示一个会话 每一个会话都可以以一个唯一正整数id表示 当用户在一个会话中发送或接收信息时 如果该会话已经
  • Wifi模块—源码分析Wifi热点扫描2(Android P)

    一 前言 这次接着讲Wifi工程流程中的Wifi热点扫描过程部分的获取扫描结果的过程 也是Wifi扫描过程的延续 可以先看前面Wifi扫描的分析过程 Wifi模块 源码分析Wifi热点扫描 Android P 二 图示调用流程 这次的调用流
  • 【华为OD机试真题2023B卷 JS】勾股数元组

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 勾股数元组 知识点编程基础 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 如果3个正整数 a b c 满足a2 b2 c2的关系 则称 a b c 为勾股数 著名的勾
  • 【华为OD】最多几个直角三角形_全组合求解

    目录 一 题目描述 二 输入描述 三 输出描述 3 1 描述 四 题目解析 五 Java玩法 六 JavaScript玩法 一 题目描述 有 N 条线段 长度分别为 a 1 a n 现要求你计算这 N 条线段最多可以组合成几个直角三角形 每
  • Java中内部类详解(类的五成员之五:内部类)

    目录 友情提醒 概述 Java类的五成员之五 内部类 一 内部类 1 成员内部类 2 方法内部类 3 匿名内部类 4 静态内部类 二 匿名内部类与Lambda表达式 友情提醒 先看文章目录 大致了解知识点结构 直接点击文章目录可以跳转到文章
  • Git 如何优雅地回退代码

    前言 从接触编程就开始使用 Git 进行代码管理 先是自己玩 Github 又在工作中使用 Gitlab 虽然使用时间挺长 可是也只进行一些常用操作 如推拉代码 提交 合并等 更复杂的操作没有使用过 看过的教程也逐渐淡忘了 有些对不起 Li
  • 测试开发工程师的简历和面试准备

    文章目录 职业规划 核心事项 不必等待准备 完美 才投简历 准备简历 确定一批目标公司和目标职位 详细事项 可以慢慢完备 时间有限 注意结合所需 简历 简历命名 邮件标题同理 携带个人信息 优先使用pdf格式的简历 最好打印大小是A4 简历
  • WINAPI WinMain

    include
  • 为什么每个程序执行都有内核地址空间和程序地址空间?

    为什么每个用户态的程序映射到虚拟地址空间 都需要有内核地址空间和程序地址空间呢 因为程序地址空间最终都会调用系统调用 也就是内核的东东 所以每个程序要想执行 就必须有内核地址空间 也必须有程序地址空间 所用的application程序要想使
  • 11 种加密 & 哈希算法的原理及其 Java 实现

    11 种加密 哈希算法的原理及其 Java 实现 一 目的 二 运行环境 三 基本原理及步骤 I 各种加密算法的原理 DES 数据加密标准 Data Encryption Standard 算法介绍 算法流程 优点 缺点 破解方式 适用场景
  • Linux期末考试题库(超全)

    文章目录 Linux期末考试题库 选择题 填空题 简答题 操作题 Linux期末考试题库 选择题 在创建Linux分区时 一定要创建 D 两个分区 A FAT NTFS B FAT SWAP C NTFS SWAP D SWAP 根分区 在
  • react样式处理

    react样式处理有两种处理方式 行内样式处理 使用className来定义类名 使用行内样式处理 语法 lt 元素 style css属性1 值1 css属性2 值2 gt 用法 引入react核心包 import React from
  • 完全免费快速搭建个人www服务器

    想拥有自己的web服务器吗 想把服务器放到自己家里吗 通过ADSL拨号也能建立个人的服务器吗 本文告诉你答案 要建立自己的web服务器 需要两个最重要的工作 1 让别人知道你的主机 目前访问Internet上主机的方式主要有两种 一是通过I
  • [JAVAee]SpringBoot配置文件

    配置文件的介绍 配置文件当中记录了许多重要的配置信息 例如 数据库的连接信息 用户的账户与密码 项目的启动端口 第三方系统的调用密匙 用于记录问题产生的日志 在spring框架中一些特定的框架会自动调用配置文件中的配置信息来运用 配置文件中
  • KCF论文技术路线

    https blog csdn net crazyice521 article details 53525366 http www cnblogs com YiXiaoZhou p 5925019 html 一 算法介绍 KCF全称为Ker
  • 搭建高可用mongodb集群(三)—— 深入副本集内部机制

    在上一篇文章 搭建高可用mongodb集群 二 副本集 介绍了副本集的配置 这篇文章深入研究一下副本集的内部机制 还是带着副本集的问题来看吧 副本集故障转移 主节点是如何选举的 能否手动干涉下架某一台主节点 官方说副本集数量最好是奇数 为什
  • 微信小程序中获取用户信息getUserInfo替换方案

    场景说明 我们在开发过程中 如果使用getUserInfo获取用户头像和昵称等用户信息时 会出现如下报错 in promise MiniProgramError errMsg getUserInfo fail scope unauthori
  • 冒泡排序--数组的简单排序,从大到小,从小到大

    冒泡排序 是计算机程序中较为常见和简单的排序算法 它需要重复地走访需要进行排序的元素列 按照一定顺序依次比较两个相邻的元素 如果顺序错误就把他们交换过来 示意原图如下 我们需要的结果示意图如下 那我们应该怎么进行程序的编写才能满足这样的结果
  • Stable Diffusion WebUI安装ControlNet插件

    ControlNet是一种通过添加额外条件来控制扩散模型的神经网络结构 sd webui controlnet下载地址 GitHub Mikubill sd webui controlnet WebUI extension for Cont
  • 一些基本引言的知识点

    文章目录 一些基本引言的知识点 系统调优你所不知道的TIME WAIT和CLOSE WAIT 一些基本引言的知识点 哥在 PHP7 中 把 HashTable 结构体从 72 字节压缩到了 56 字节 表 看起来不 的优化 实际上是成倍的性