最后更新:2021-10-18 20:13:45 手机定位技术交流文章
作者 | 汪翰林
编辑 | 蔡芳芳
作为最著名的NSQL数据库之一的Redis公司数据库之一,它具有高速度、高可用性和高扩展功能,而且在许多互联网业务中广泛使用。 目前,Redis公司行业绩效优化的主要工具是优化配置项目及其使用方式。
分 析
作为典型的Socket类程序,Redis-server将接收客户通过收听地址端口提供的连接,该端口将建立以读取客户关于连接的请求,然后处理,然后返回客户,在创建连接时,请其回复,请其阅读,而作为典型的Socket类程序,通过内核 TCP/IP协议反服务器提供的答复,将接收客户通过收听地址端口提供的连接,该端口将建立以读取客户关于连接的请求,然后处理,然后返回客户,在创建连接时,请其回复,请其阅读,并通过内核TCP/IP协议柜口提供的答复。
客户读取压力请求时,火焰地图信息记录在图形中。 可以看出,核国家协议仓库占用的CPU成本更高, 即sys_ write, 约占总量的40%。 如果CPU的这一部分得到改进, 其优点仍然相当大。
CPU 比例优化的这一方面如何运作? 最好能完全无意识地进行再应用。
保存整个交易是不切实际的, 所以最底层的 TCP 通讯并不有趣。 尽管如此, 我们可能会认为在不接管Redis的CPU 的情况下, 将治疗的这个部分 清除掉。
那么,禁产日期在哪里?
这可以在另外的程序中完成,这和剥离前一样吗?
否。 因为多个雷迪斯事件经常在一台计算机上发生,许多雷迪斯事件的例子可以分享达成协定的过程,相当于雷迪斯和阵列之间1:1的具有约束力的部署关系,相当于独立的N-1部署关系。
因此,协议执行过程的执行非常关键,不能成为瓶颈;否则,就会导致业绩的改善,甚至更糟。
终于到了用户国家出现的时候了!
优 化
用户态协议栈介绍
根据定义,用户国家储存库是用来将最初在核心核国家完成的TCP/IP协议储存库转向用户国家现实的技术。
1. 高性能
Redis是一种用户-国家应用程序,它援引了TCP/IP议定书内核,导致用户-状态和内核-状态环境发生变化,此外,如前所述,内核和应用与资源占用(即独立部署)有着不可分割的联系,不能与资源占用(即独立部署)分开。
2. 易调测
已经建立内核的学生应该知道内核程序的管理更加严格,如果一个行动不移动,内核就会挂起来。 在一个用户国家衡量它们会更容易得多。
3. 易定制
当内核协议的版本重叠时,历史负荷会增加,导致膨胀;此外,新特性的整合将越来越依赖于对缺陷的谨慎、甚至更长的回收周期;协议的用户状态不会出现这样的问题,因为根据内核进行裁剪和修改并易于测量,会大大降低测试错误的成本。
协议对用户国的具体实施
我们利用开放源码VPP+VCL软件进行互动:VPP作为一个独立进程,作为一个用户国家完成TCP/IP,VCL作为一个动态图书馆,实现Socket型接口劫持,以及后端VPP。
其中:
VCL - 实现Socket Socket 级界面与后端 VPP 进行劫持和通信
FIFO - 基于共享的内存信封的 VCL 和 VPP 之间的通信信息排队。
会话 - 保持传输层和更高应用层之间的交流。
TCP/IP - TCP/IP内核仓库执行
DPDK - 正在卸载 Webcard 信件到用户状态
VPP+VCL单独部署模式通过LD_PRELOAD装入VCL动态图书馆,从而从应用端消除协议反作用器,并加强了Redis的无侵入加速度。
最后,VPP如何有效地管理自己,使其不致成为瓶颈?
VPP基本上基于DPDK, 以实现高效率的接收和分发提交书,以及其本身的定量处理(减少缺少CPU缓存)以实现高效的提交书处理;此外,图形节点+插件使主要基于DPDK的扩展和定制生产变得非常容易,以实现高效的接收和分发提交书,以及其本身的定量处理(减少缺少CPU缓存)以实现高效的提交书处理;此外,图形节点+插件使得扩展和定制变得非常容易。
Rdbsave 动态进程的问题
使用开放源码VPP来加速一些社区版本的再接触和解决问题,这通常是由动态动态过程引起的。
配置文件可以确定保存期限和触发保存的更改数量,如果周期配置更短,而触发保存的更改数量更低,则可能导致经常形成和撤回rdbsave过程,这可能暗示 Redis 。
会话同步问题
启动 rdbsave 进程时, 相关会话资源与主线同步。 目前, 社区相关会话资源没有同步, 主要是因为会话处理包含进程的进程_ index 信息, 并且由于进程_ index 随进程/ 线索而不同, 直接来自主线的会话必须根据工人_ index 转换 。
死锁问题
当 Rdbsave 进程退出目前通过主线捕捉到, SISGHLD 信号在信号处理功能中释放时,需要释放并与进程相关的服务资源。如果主线跳跃到信号处理功能,以便当首次获得锁A 时释放资源,那么当资源释放时,A 也会获得锁。这导致一个死锁。当然,在锁A 的情况下,我们可以找到解决这个问题的办法,但这一解决办法并不完整,因为主线可能会获得锁B,然后进入信号处理功能,释放资源,然后在资源释放时获得锁B。根本原因是在完成信号处理功能之前主线的未知状态。
因此,我们或许可以考虑在信号处理功能中不再释放资源,而仅仅储存放电资源索引,直到适当时机到来,例如等待执行时。 所需的改变现已纳入社区。
效 果
由于改进了火焰图,可以看到下列效果:
核心插座在读写方面大大减少,留下用于在协议用户状态中说明VCL和VPP之间事件的事件通知。
这是我们对埃及2011年9月9日和1月9日抗议抗议事件特别报导的一部分。 二楼,二楼,二楼,二楼,二楼。
QPS增加了31%,当时内核再分解 CPU处理99%的工作量,用户再分解 CPU需要大约80%。
延迟已经减少。 目前,核心状态Redis CPU承担了99%的工作量,而用户状态Redis CPU则承担了大约80%的工作量。
总 结
用户-州亭可以很容易地加速对Redis的非侵扰,而且,由于CPU资源较少,与内核亭相比,QPS加速率可以达到31%,同时将潜伏率减少23%。
用户最先进的仓库,作为共同的加速部分,理论上可以支持加速所有Socket级应用程序。 目前,根据用户-国家协议,API网关的特使加速工作已经推销,并置于网络便利环境中,外部客户测试了Sidecar加速工作,对Redis加速工作进行了测试。 整个加速部分的数据面以部署Kubernetes Daemon Set为基础,而控制面则以部署Kubernetes操作员为基础,该操作员既简单又容易部署。 我们还将继续探索我们后续工作中基于用户-国家协议的进一步应用设想。
作者介绍:
Wang Han Lin是一名具有16年软件开发背景的网叶帆开发专家,曾在中国和中国从事安全、视频监视、大数据、网络虚拟化等技术产品开发工作,目前正在新田国家研究所高级性能网络技术研究前和生产领域工作。
活动推荐
该网络最深入的技术信息以及所有领域最大的生产者汇集在一起。
信息Q试点正式开始,你是下一个先锋!
扫描下面的 2D 将为您提供额外活动统计!
本文由 在线网速测试 整理编辑,转载请注明出处。