测试:我压测的时候,主要要关注哪些日志或者指标信息?
开发:服务资源、数据库、es、redis
长期沉迷于业务逻辑测试的我,突然就蒙圈了,数据库、es、redis虽然日常有大概知道那是「what」,但是现在要进行压测的时候,具体要观察数据库的“what”,还真是一头雾水~
于是我就开始了一顿「知识恶补」和「不耻下问」的道路,
以下为个人工作过程实践总结,仅供分享学习~
NO1:了解数据库类型
数据库
|
类型
|
特点
|
Mysql
|
关系型数据库管理系统
|
作为数据的主数据库存储,存放持久化数据,读取速度慢
|
Elasticsearch
(简称ES)
|
非关系型数据库
|
是一个实时的搜索引擎,使用场景:大数据量下的检索,数据分析,日志分析,实时、高并发低延迟的场景应用较多
|
Redis
|
非关系型的数据库
|
读取速度快,但不支持事务,关系复杂的场景不适用redis,可以用来配合关系型数据库做缓存,以及一些持久化数据,适用于一些高并发读写
|
NO2:了解公司内部数据库使用场景
了解负责的系统在不同场景下使用的数据库类型。
-
查询频率高且存在数据变动,主要存储在 Elasticsearch(ES)内
-
查询频率高但是数据基本不变,主要存储在redis内
-
mysql是主数据库
三者的数据关系如下:
NO3. 数据库核心关注指标
-
CPU、内存使用率、磁盘占用空间
CPU、内存、磁盘这三项是能够看到的最直观的性能指标,也是数据库运行状态的整体体现。一旦数据库服务器这三项出现不正常的波动,必然会影响项目的稳定与性能。所以在进行性能压测时,首要关注的指标数据有这三个。
在个人近期的性能专项实践中,由于性能相关知识不够深和广,所以提前跟开发「确认」压测过程中重点「关注」并「记录」数据库的CPU、内存使用率2个指标,其中Redis 除了关注CPU、内存使用率还需要关注并记录缓存命中率
图为阿里云提供的Redis的性能基础数据
压测时记录:
1. MySQL:CPU使用率、内存使用率
2. ES:CPU使用率、内存使用率
3. Redis:CPU使用率、内存使用率、缓存命中率
将上面数据的截图记录下来,最后将多轮的压测数据量化,观察数据库的指标变化是否存在异常。
数据库的性能指标还有很多,例如连接池的使用、慢请求、key监控等等,这个就后续慢慢学习进步~
努力的意义
当好运降临在自己身上时
你会觉得“我配”
而不是看着好事落在别人身上
然后愤愤地说“我呸”