鲲鹏经典直播征文】+BoostKit分布式存储学习

网友投稿 697 2022-05-28

一、鲲鹏BoostKit分布式存储整体介绍。

1)鲲鹏BoostKit分布式存储概述

随着IoT、大数据、移动互联等应用的暴涨,产生的数据也越来越多,整个存储市场总量也逐年增长,根据IDC的预计到2027年,分布式存储会占到整个市场的70%。

随着分布式存储越来越普及,现在一些对性能要求比较高的应用也开始使用分布式存储了,例如金融系统的数据库。要实现高性能的存储系统,一般都需要配置SSD作为主要存储介质,要将SSD的性能完全发挥出来,对CPU的处理能力要求就越来越高。TaiShan服务器是基于华为自研的鲲鹏系列处理器,华为鲲鹏920处理器提供了最高64核2.6GHz的计算能力,这个能力已经超越了当前业界所有的主流平台。有了华为鲲鹏系列处理器的鲲鹏分布式存储系统,相对于传统硬件平台的分布式存储系统,性能优势非常明显。

鲲鹏BoostKit分布式存储使能套件(简称鲲鹏BoostKit分布式存储),以鲲鹏硬件平台为底座,依托鲲鹏硬件的自研处理器、网卡、SSD、管理芯片、AI芯片的全方位整体优势,结合开源Ceph分布式存储软件,为客户提供块存储、文件存储、对象存储服务。

2)鲲鹏BoostKit分布式存储总体架构

鲲鹏BoostKit分布式存储总体架构主要由硬件平台、操作系统、中间件、分布式存储软件构成,其中分布式存储软件当前只支持开源Ceph。

3)鲲鹏分布式存储集群架构

Ceph存储集群

存储集群的客户端和各个Ceph OSD守护进程使用CRUSH算法高效地计算数据位置,而不是依赖于一个中心化的查询表。它的高级功能包括:基于librados的原生存储接口和多种基于librados的服务接口。

Ceph存储集群从Ceph客户端接收数据(不管是来自Ceph块设备、 Ceph对象存储、 Ceph文件系统,还是基于librados的自定义实现)并存储为对象。每个对象是文件系统中的一个文件,它们存储在对象存储设备上。由Ceph OSD守护进程处理存储设备上的读/写操作。

Ceph OSD在扁平的命名空间内把所有数据存储为对象(也就是没有目录层次)。对象包含一个标识符、二进制数据、和由名字/值对组成的元数据,元数据语义完全取决于Ceph客户端。

超大规模集群支持

在很多集群架构中,集群成员的主要目的就是让集中式接口知道它能访问哪些节点,然后此中央接口通过一个两级调度为客户端提供服务,在PB到EB级系统中这个调度系统必将成为最大的瓶颈。

Ceph消除了此瓶颈:其OSD守护进程和客户端都能感知集群,例如Ceph客户端、各OSD守护进程都知道集群内其他的OSD守护进程,这样OSD就能直接和其它OSD守护进程和监视器通讯。另外,Ceph客户端也能直接和OSD守护进程交互。

客户端把对象写入目标归置组的主OSD,然后这个主OSD再用它的CRUSH图副本找出用于放对象副本的第二、第三个OSD,并把数据复制到适当的归置组所对应的第二、第三OSD(要多少副本就有多少OSD),最终,确认数据成功存储后反馈给客户端。

有了做副本的能力,OSD守护进程就可以减轻客户端的复制压力,同时保证了数据的高可靠性和安全性。

动态集群管理

每个存储池都有很多归置组,CRUSH动态的把它们映射到OSD 。Ceph客户端要存对象时,CRUSH将把各对象映射到某个归置组。

把对象映射到归置组在OSD和客户端间创建了一个间接层。由于Ceph集群必须能增大或缩小、并动态地重均衡。如果让客户端“知道”哪个OSD有哪个对象,就会导致客户端和OSD紧耦合;相反,CRUSH算法把对象映射到归置组、然后再把各归置组映射到一或多个OSD,这一间接层可以让Ceph在OSD守护进程和底层设备上线时动态地重均衡。下图描述了CRUSH如何将对象映射到归置组、再把归置组映射到OSD。

有了集群运行图副本和CRUSH算法,客户端就能精确地计算出到哪个OSD读、写某特定对象。

Ceph客户端绑定到某监视器时,会索取最新的集群运行图副本,有了此图,客户端就能知道集群内的所有监视器、OSD和元数据服务器。然而它对对象的位置一无所知。对象位置是计算出来的。

客户端只需输入对象名称和存储池,此事简单:Ceph把数据存在某存储池(如 liverpool )中。当客户端想要存命名对象(如john、paul、george、ringo等等)时,它用对象名、一个哈希值、 存储池中的归置组数、存储池名计算归置组。Ceph按下列步骤计算PG ID。

客户端输入存储池名称和对象名称(如pool="liverpool"和object-id="john")。

CRUSH拿到对象名称并哈希它。

CRUSH用PG数(如58)对哈希值取模,这就是归置组ID。

CRUSH根据存储池名称取得存储池ID(如liverpool = 4 )。

CRUSH把存储池ID加到PG ID(如 4.58 )之前。

数据重均衡

当Ceph存储集群新增一个OSD守护进程时,集群运行图就要用新增的OSD更新。回想计算PG ID,这个动作会更改集群运行图,因此也改变了对象位置,因为计算时的输入条件变了。下图描述了重均衡过程(此图仅作简单示例,因为在大型集群里变动幅度小的多),是其中的一些而不是所有PG都从已有OSD(OSD 1和2)迁移到新OSD(OSD 3)。即使在重均衡中,CRUSH都是稳定的,很多归置组仍维持最初的配置,且各OSD都腾出了些空间,所以重均衡完成后新OSD上不会出现负载突增。

计算对象位置远快于查询定位, CRUSH算法允许客户端计算对象应该存到哪里,并允许客户端连接主OSD来存储或检索对象。

二、鲲鹏BoostKit存储方案特性

1)块存储服务

Ceph块存储又称为RADOS块设备,Ceph为块设备引入了一个新的RBD协议,即(Ceph Block Device)。RBD为客户端提供了可靠、分布式、高性能的块存储。RBD块呈带状分布在多个Ceph对象之上,而这些对象本身又分布在整个Ceph存储集群中,因此能够保证数据的可靠性以及性能。RBD已经被Linux内核支持,换句话说,RBD驱动程序在过去的几年里已经很好地跟Linux内核集成。几乎所有的Linux操作系统发行版都支持RBD。除了可靠性和性能之外,RBD也支持其他的企业级特性,例如完整和增量式快照,精简的配置,写时复制(copy-on-write)式克隆,以及其他特性。RBD还支持全内存式缓存,这可以大大提高它的性能。

Ceph RBD镜像可以作为磁盘映射到物理裸机、虚拟机或者其他主机使用。业界领先的开源hypervisor,例如KVM和Xen完全支持RBD,并利用它为自个的客户虚拟机提供RBD特性。

Ceph块设备完全支持云平台,例如OpenStack等。在OpenStack中,可以通过cinder(块)和glance(image)组件来使用Ceph块设备。这样做可以利用Ceph块存储的copy-on-write特性在很短的时间内创建上千个VM。

2)文件存储服务

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。CephFS使用Ceph集群提供与POSIX兼容的文件系统,允许Linux直接将Ceph存储mount到本地。它可以像NFS或者SAMBA那样,提供共享文件夹,客户端通过挂载目录的方式使用Ceph提供的存储。

使用CephFS时,需要配置MDS节点。MDS节点类似于元数据的代理缓存服务器,它为Ceph文件系统提供元数据计算、缓存与同步。

3)对象存储服务

对象存储不是传统的文件和块形式存储数据的方法,而是一种以对象也就是通常意义的键值形式进行存储。在多台服务器中内置大容量硬盘,并安装上对象存储管理软件Ceph,对外通过接口提供读写访问功能。每个对象需要存储数据、元数据和一个唯一的标识符。对象存储不仅具备块存储的读写高速,还具备文件存储的共享等特性,适合于更新变动较少的场景,如图片存储、视频存储。但是对象存储不能像文件系统的磁盘那样被操作系统直接访问,只能通过API在应用层面被访问。建立在Ceph RADOS层之上的Ceph对象网关(也称为RGW接口)提供了与OpenStack Swift和Amazon S3兼容的接口对象存储接口,包括GET、PUT、DEL和其他扩展。

RADOS是Ceph存储集群的基础。在Ceph中,所有数据都以对象的形式存储,并且无论什么数据类型,RADOS对象存储都将负责保存这些对象。RADOS层可以确保数据始终保持一致。RADOS要有它自己的用户管理。RADOS网关提供RESTful接口让用户的应用程序将数据存储到Ceph集群中。RADOS网关接口兼容Swift和S3。

RADOSGW(RGW)使用librgw和librados来实现允许应用程序与Ceph对象存储建立连接,它将API请求转化为librados请求,并且提供S3和Swift兼容的RESTful API接口。

RGW的内部逻辑处理过程中,HTTP前端接收请求数据并保存在相应的数据结构中。REST API通用处理层从HTTP语义中解析出S3或Swift数据并进行一系列检查。检查通过后,根据不同API操作请求执行不同的处理流程。如需从RADOS集群中获取数据或者往RADOS集群中写入数据,则通过RGW与RADOS接口适配层调用librados接口将请求发送到RADOS集群中获取或写入相应数据。

要访问Ceph的对象存储系统,其实也可以绕开RADOS网关层,这样更灵活并且速度更快。librados软件库允许用户的应用程序通过C、C++、Java、Python和PHP直接访问Ceph对象存储。Ceph对象存储具备多站点(multisite)的能力,也就是说它能为灾难恢复提供解决方案。通过RADOS或者联合网关可以配置多站点的对象存储。

从存储角度来看,Ceph对象存储设备执行从对象到块的映射(在客户端的文件系统层中常常执行的任务)。这个动作允许本地实体以最佳方式决定怎样存储一个对象。Ceph的早期版本在一个名为EBOFS的本地存储器上实现一个自定义低级文件系统。这个系统实现一个到底层存储的非标准接口,这个底层存储已针对对象语义和其他特性(例如对磁盘提交的异步通知)调优。目前,B-tree文件系统(BTRFS)可以被用于存储节点,它已经实现了部分必要功能(例如嵌入式完整性)。

4)多副本特性

Ceph分布式存储采用数据多副本备份机制来保证数据的可靠性,默认保存为3个副本(可修改)。Ceph采用CRUSH算法,在大规模集群下,实现数据的快速、准确存放,同时能够在硬件故障或扩展硬件设备时,做到尽可能小的数据迁移,其原理如下:

当用户要将数据存储到Ceph集群时,数据先被分割成多个object(每个object一个object id,大小可设置,默认是4MB),object是Ceph存储的最小存储单元。

由于object的数量很多,为了有效减少了object到OSD的索引表、降低元数据的复杂度,使得写入和读取更加灵活,引入了pg(Placement Group):PG用来管理object,每个object通过Hash,映射到某个pg中,一个pg可以包含多个object。

Pg再通过CRUSH计算,映射到osd中。如果是三副本的,则每个pg都会映射到三个osd,保证了数据的冗余。

CRUSH算法资源划分示意图

CRUSH算法并不是绝对不变的,会受其他因素影响,影响因素主要有:

当前系统状态(Cluster Map)当系统中的OSD状态、数量发生变化,会引起Cluster Map发生变化,这边变化就会影响PG与OSD的映射关系。

存储策略配置(存储策略主要与数据安全相关)通过策略可以指定同一个PG的3个OSD分别位于数据中心的不同服务器甚至不同机柜上,从而更加完善存储的可靠性。

如下图所示,对于节点Server1的磁盘Disk1上的数据块P1,它的数据备份为节点Server2的磁盘Disk2上P1',P1和P1'构成了同一个数据块的两个副本。例如,当P1所在的硬盘故障时,P1'可以继续提供存储服务。

Ceph分布式存储多副本示意图

三、鲲鹏分布式存储部署

1)Ceph-ansible部署

简要介绍

ceph-ansible是用于部署Ceph分布式系统的Ansible脚本。

Ansible是一种自动化运维工具,基于Python开发,集合了众多运维工具(Puppet、CFEngine、Chef、Func、Fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

Ansible基于模块工作,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架。

部署流程介绍

部署流程示意图

环境要求

服务器名称

TaiShan 200服务器(型号2280)

处理器

鲲鹏920 5220处理器

核数

2*32核

主频

2600MHz

内存大小

12*16GB

内存频率

2666MHz

网卡

IN200网卡4*25GE

硬盘

【鲲鹏经典直播征文】+BoostKit分布式存储学习

系统盘:RAID1(2*960GB SATA SSD)

数据盘:Raid模式下使能JBOD(12*4TB SATA HDD)

NVMe SSD

1*ES3000 V5 3.2TB NVMe SSD

Raid卡

Avago SAS 3508

软件名称

版本

OS

CentOS Linux release 7.6.1810

安装方式:“Infrastructure Server”+“development tools”

Ceph

14.2.1 Nautilus

Ansible

2.8.5

Ceph-ansible

stable-4.0

物理组网方式如下图所示。

2)Ceph块存储部署

简要介绍

Ceph 是一个专注于分布式的、弹性可扩展的、高可靠的、性能优异的存储系统平台,可以同时支持块设备、文件系统和对象网关三种类型的存储接口。Ceph架构如下图所示。

在安装Ceph之前,需要进行关闭防火墙、配置主机名、配置时间服务、配置免密登录、关闭SELinux、配置软件源等操作,然后使用yum命令安装Ceph,随后部署MON节点、MGR节点和OSD节点,最后验证Ceph以完成部署操作。

Ceph架构

模块名称

功能描述

RADOS

RADOS(Reliable Autonomic Distributed Object Store,RADOS)是Ceph存储集群的基础。Ceph中的一切都以对象的形式存储,而RADOS就负责存储这些对象,而不考虑它们的数据类型。RADOS层确保数据一致性和可靠性。对于数据一致性,它执行数据复制、故障检测和恢复,还包括数据在集群节点间的recovery。

OSD

实际存储数据的进程。通常一个OSD daemon绑定一个物理磁盘。Client write/read数据最终都会走到OSD去执行write/read操作。

MON

Monitor在Ceph集群中扮演者管理者的角色,维护了整个集群的状态,是Ceph集群中最重要的组件。MON保证集群的相关组件在同一时刻能够达成一致,相当于集群的领导层,负责收集、更新和发布集群信息。为了规避单点故障,在实际的Ceph部署环境中会部署多个MON,同样会引来多个MON之前如何协同工作的问题。

MGR

MGR目前的主要功能是一个监控系统,包含采集、存储、分析(包含报警)和可视化几部分,用于把集群的一些指标暴露给外界使用。

Librados

简化访问RADOS的一种方法,目前支持PHP、Ruby、Java、Python、C和C++语言。它提供了Ceph存储集群的一个本地接口RADOS,并且是其他服务(如RBD、RGW)的基础,此外,还为CephFS提供POSIX接口。Librados API支持直接访问RADOS,使开发者能够创建自己的接口来访问Ceph集群存储。

RBD

Ceph块设备,对外提供块存储。可以像磁盘一样被映射、格式化和挂载到服务器上。

RGW

Ceph对象网关,提供了一个兼容S3和Swift的RESTful API接口。RGW还支持多租户和OpenStack的Keystone身份验证服务。

MDS

Ceph元数据服务器,跟踪文件层次结构并存储只供CephFS使用的元数据。Ceph块设备和RADOS网关不需要元数据。MDS不直接给Client提供数据服务。

CephFS

提供了一个任意大小且兼容POSlX的分布式文件系统。CephFS依赖Ceph MDS来跟踪文件层次结构,即元数据。

环境要求

服务器名称

TaiShan 200服务器(型号2280)

处理器

鲲鹏920 5220处理器

核数

2*32核

主频

2600MHz

内存大小

8*16GB

内存频率

2933MHz

网卡

IN200网卡4*25GE

硬盘

系统盘:RAID1(2*960GB SATA SSD)

数据盘:RAID模式下使能JBOD(12*4TB SATA HDD)

NVMe SSD

1*ES3000 V5 3.2TB NVMe SSD

RAID卡

Avago SAS 3508

相关软件版本

软件名称

版本

OS

openEuler 20.03

Ceph

14.2.10 Nautilus

ceph-deploy

2.0.1

集群环境规划

物理组网方式如下图所示。

3)Ceph对象存储

Ceph 是一个专注于分布式的、弹性可扩展的、高可靠的、性能优异的存储系统平台,可以同时支持块设备、文件系统和对象网关三种类型的存储接口。Ceph架构如下图所示。

在安装Ceph之前,需要进行关闭防火墙、配置主机名、配置时间服务、配置免密登录、关闭SELinux、配置软件源等操作,然后使用yum命令安装Ceph,随后部署MON节点、MGR节点和OSD节点,最后验证Ceph以完成部署操作。

Ceph架构

环境要求

服务器名称

TaiShan 200服务器(型号2280)

处理器

鲲鹏920 5220处理器

核数

2*32核

主频

2600MHz

内存大小

8*16GB

内存频率

2933MHz

网卡

IN200网卡4*25GE

硬盘

系统盘:RAID1(2*960GB SATA SSD)

数据盘:RAID模式下使能JBOD(12*4TB SATA HDD)

NVMe SSD

1*ES3000 V5 3.2TB NVMe SSD

RAID卡

Avago SAS 3508

软件名称

版本

OS

CentOS Linux release 7.6.1810

Ceph

14.2.10 Nautilus

ceph-deploy

2.0.1

集群环境规划

物理组网图

四、鲲鹏BoostKit分布式存储调优

1)Ceph块存储调优

调优原则与思路

块存储调优主要分为:

均衡型配置调优以机械硬盘(HDD)作为数据盘,并配置适量固态硬盘(SSD)作为DB/WAL分区、元数据存储池的场景。

高性能配置调优即所有数据盘都是用固态硬盘(SSD)的场景。

调优原则

在性能优化时,需要遵循一定的原则,主要有以下几个方面:

对性能进行分析时,要多方面分析系统的资源瓶颈所在,如CPU利用率达到100%时,也可能是内存容量限制,导致CPU忙于处理内存调度。

一次只对一个性能指标参数进行调整。

分析工具本身运行可能会带来资源损耗,导致系统某方面的资源瓶颈情况更加严重,应避免或降低对应用程序的影响。

调优思路

很多情况下压测流量并没有完全进入到后端(服务端),在网络接入层(云化的架构,比如:SLB/WAF/高防IP,甚至是CDN/全站加速等)可能就会出现由于各种规格(带宽、最大连接数、新建连接数等)限制或者因为压测的某些特征符合CC和DDoS的行为而触发了防护策略导致压测结果达不到预期。

接着看关键指标是否满足要求,如果不满足,需要确定是哪个地方有问题,一般情况下,服务器端问题可能性比较大,也有可能是客户端问题(这种可能性非常小)。

对于服务器端问题,需要定位的是硬件相关指标,例如CPU,Memory,Disk IO,Network IO,如果是某个硬件指标有问题,需要深入的进行分析。

如果硬件指标都没有问题,需要查看中间件相关指标,例如:线程池、连接池、GC等,如果是这些指标问题,需要深入的分析。

如果中间件相关指标没问题,需要查看数据库相关指标,例如:慢查SQL,命中率,锁、参数设置。

如果以上指标都正常,应用程序的算法、缓冲、缓存、同步或异步可能有问题,需要具体深入的分析。

可能的瓶颈点如下表所示。

瓶颈点

说明

硬件/规格

一般指的是CPU、内存、磁盘IO方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)。

中间件

一般指的是应用服务器、web服务器等应用软件,还包括数据库系统。例如:中间件weblogic平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈。

应用程序

一般指的是开发人员开发出来的应用程序。例如,JVM参数不合理,容器配置不合理,慢SQL,数据库设计不合理,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够、无缓冲、无缓存、生产者和消费者不协调等),造成系统在大量用户方位时性能低下而造成的瓶颈。

操作系统

一般指的是Windows、UNIX、Linux等操作系统。例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系统上出现性能瓶颈。

网络设备

一般指的是防火墙、动态负载均衡器、交换机等设备。当前更多的云化服务架构使用的网络接入产品:包括但不限于SLB/WAF/高防IP/CDN/全站加速等等。例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时可以认为网络瓶颈。

调优的通用步骤:

调优通用步骤

2)Ceph对象存储调优

调优原则与思路

对象存储调优主要分为:

冷存储配置调优所有数据盘都是机械硬盘(HDD)的场景,即DB/WAL分区、元数据存储池都使用机械硬盘

均衡型配置调优以机械硬盘(HDD)作为数据盘,并配置适量固态硬盘(SSD)作为DB/WAL分区、元数据存储池的场景

高性能配置调优高性能配置是指所有数据盘都是用固态硬盘(SSD)的场景

调优原则

在性能优化时,需要遵循一定的原则,主要有以下几个方面:

对性能进行分析时,要多方面分析系统的资源瓶颈所在,如CPU利用率达到100%时,也可能是内存容量限制,导致CPU忙于处理内存调度。

一次只对一个性能指标参数进行调整。

分析工具本身运行可能会带来资源损耗,导致系统某方面的资源瓶颈情况更加严重,应避免或降低对应用程序的影响。

调优思路

很多情况下压测流量并没有完全进入到后端(服务端),在网络接入层(云化的架构,比如:SLB/WAF/高防IP,甚至是CDN/全站加速等)可能就会出现由于各种规格(带宽、最大连接数、新建连接数等)限制或者因为压测的某些特征符合CC和DDoS的行为而触发了防护策略导致压测结果达不到预期。

接着看关键指标是否满足要求,如果不满足,需要确定是哪个地方有问题,一般情况下,服务器端问题可能性比较大,也有可能是客户端问题(这种可能性非常小)。

对于服务器端问题,需要定位的是硬件相关指标,例如CPU,Memory,Disk IO,Network IO,如果是某个硬件指标有问题,需要深入的进行分析。

如果硬件指标都没有问题,需要查看中间件相关指标,例如:线程池、连接池、GC等,如果是这些指标问题,需要深入的分析。

如果中间件相关指标没问题,需要查看数据库相关指标,例如:慢查SQL,命中率,锁、参数设置。

如果以上指标都正常,应用程序的算法、缓冲、缓存、同步或异步可能有问题,需要具体深入的分析。

可能的瓶颈点如下表所示。

瓶颈点

说明

硬件/规格

一般指的是CPU、内存、磁盘IO方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)。

中间件

一般指的是应用服务器、web服务器等应用软件,还包括数据库系统。例如:中间件weblogic平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈。

应用程序

一般指的是开发人员开发出来的应用程序。例如,JVM参数不合理,容器配置不合理,慢SQL,数据库设计不合理,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够、无缓冲、无缓存、生产者和消费者不协调等),造成系统在大量用户方位时性能低下而造成的瓶颈。

操作系统

一般指的是Windows、UNIX、Linux等操作系统。例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系统上出现性能瓶颈。

网络设备

一般指的是防火墙、动态负载均衡器、交换机等设备。当前更多的云化服务架构使用的网络接入产品:包括但不限于SLB/WAF/高防IP/CDN/全站加速等等。例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时可以认为网络瓶颈。

调优的通用步骤:

调优通用步骤

3)Ceph文件存储调优

调优原则

在性能优化时,需要遵循一定的原则,主要有以下几个方面:

对性能进行分析时,要多方面分析系统的资源瓶颈所在,如CPU利用率达到100%时,也可能是内存容量限制,导致CPU忙于处理内存调度。

一次只对一个性能指标参数进行调整。

分析工具本身运行可能会带来资源损耗,导致系统某方面的资源瓶颈情况更加严重,应避免或降低对应用程序的影响。

调优思路

很多情况下压测流量并没有完全进入到后端(服务端),在网络接入层(云化的架构,比如:SLB/WAF/高防IP,甚至是CDN/全站加速等)可能就会出现由于各种规格(带宽、最大连接数、新建连接数等)限制或者因为压测的某些特征符合CC和DDoS的行为而触发了防护策略导致压测结果达不到预期。

接着看关键指标是否满足要求,如果不满足,需要确定是哪个地方有问题,一般情况下,服务器端问题可能性比较大,也有可能是客户端问题(这种可能性非常小)。

对于服务器端问题,需要定位的是硬件相关指标,例如CPU,Memory,Disk IO,Network IO,如果是某个硬件指标有问题,需要深入的进行分析。

如果硬件指标都没有问题,需要查看中间件相关指标,例如:线程池、连接池、GC等,如果是这些指标问题,需要深入的分析。

如果中间件相关指标没问题,需要查看数据库相关指标,例如:慢查SQL,命中率,锁、参数设置。

如果以上指标都正常,应用程序的算法、缓冲、缓存、同步或异步可能有问题,需要具体深入的分析。

瓶颈点

说明

硬件/规格

一般指的是CPU、内存、磁盘IO方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)。

中间件

一般指的是应用服务器、web服务器等应用软件,还包括数据库系统。例如:中间件weblogic平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈。

应用程序

一般指的是开发人员开发出来的应用程序。例如,JVM参数不合理,容器配置不合理,慢SQL,数据库设计不合理,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够、无缓冲、无缓存、生产者和消费者不协调等),造成系统在大量用户方位时性能低下而造成的瓶颈。

操作系统

一般指的是Windows、UNIX、Linux等操作系统。例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系统上出现性能瓶颈。

网络设备

一般指的是防火墙、动态负载均衡器、交换机等设备。当前更多的云化服务架构使用的网络接入产品:包括但不限于SLB/WAF/高防IP/CDN/全站加速等等。例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时可以认为网络瓶颈。

调优的通用步骤:

调优通用步骤如下图所示。

五、结束语

通过本次视频学习,以及查阅了华为网站关于鲲鹏BoostKit分布式存储的介绍,让我对华为鲲鹏BoostKit分布式存储有了更深刻的了解。了解内容如下:

1、鲲鹏BoostKit分布式存储相比其它存储优势;

2、鲲鹏BoostKit分布式存储在行业内的应用场景及相关解决方案;

3、鲲鹏BoostKit分布式存储相关资料及交流方式;

通过本次学习,受益匪浅,希望后续能有更多的学习机会。感谢华为!

六、链接分享

1、视频直接链接:https://bbs.huaweicloud.com/live/kunpeng_live/202105171930.html

2、鲲鹏BoostKit分布式存储文档链接:https://support.huaweicloud.com/function-kunpengsdss/function.html

3、鲲鹏BoostKit交流社区:https://bbs.huaweicloud.com/forum/forum-931-1.html

4、鲲鹏BoostKit学习教程:https://education.huaweicloud.com/courses/course-v1:HuaweiX+CBUCNXK047+Self-paced/about?isAuth=0&cfrom=hwc

专属分布式存储服务 分布式

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:关于文件缓冲区的概念
下一篇:成功解决当Win10系统进行深度学习的时候发现系统C盘满了,教你如何正确卸载一些非必要的内容
相关文章