读高性能MySQL(第4版)笔记03_监控

news2024/11/15 23:49:38

47d0991db9114a8a83baa5c7934277fb.png

 

1. 服务级别帮助你定义客户满意的程度和标准,以便你在解决性能、可扩展性挑战等事情与开发内部工具之间做出时间权衡

2. 服务水平指标(SLI)

2.1. 如何衡量客户是否满意

3. 服务水平目标(SLO)

3.1. 为了确保客户满意,能允许SLI达到的最低限度是多少

3.2. 将特定的SLI视为健康服务的目标范围

  • 3.2.1. 必须定义为给定时间范围内的一个具体值,以确保每个人都对SLO的含义保持一致的理解

  • 3.2.2. 如果SLI的指标是服务正常运行的时间,那么在给定的时间范围内,运行时间达到几个9就是SLO

4. 服务水平协议(SLA)

4.1. 我同意的SLO会产生什么后果

  • 4.1.1. SLA是可选的

4.2. 与一个或多个业务客户(付费客户,而非内部利益相关者)签订的协议中包含的SLO,如果未满足该SLA,将受到财务或其他处罚

4.3. 如果团队没有达到其承诺的SLO,则不应继续进行新特性的工作

5. 怎样才能让客户满意

5.1. 目标是定义确保客户满意的最低标准

5.2. 选择指标和目标的目的是随时使用客观指标评估团队是否能够利用新功能进行创新,或者稳定性是否有可能降至客户可接受的水平以下,因此需要更多的关注和资源

5.3. 承诺的“9”越多,就越难实现,团队为实现这一承诺所花费的工程时间也就越昂贵

5.4. 达到3个9的可用性

  • 5.4.1. 一年中的3个9相当于8个多小时的停机时间

  • 5.4.2. 转换到一周则只有10分钟

5.5. 999图

43a2b6a4967e4e9aaa01becf53af854d.jpeg

 

 

5.6. 工程时间是有限的资源

  • 5.6.1. 选择SLO时必须注意不要过于追求完美

  • 5.6.2. 将工程时间花在新功能上

  • 5.6.3. 将时间花在可恢复性和修复问题上

5.7. 不是产品中的所有特性都需要这么多个9才能让客户满意

  • 5.7.1. 随着产品特性集的增长,将会有不同的SLI和SLO,具体取决于特定功能的影响或其带来的收入

5.8. 区分不同用户的需求,以便可以为他们提供合理的SLI和SLO

  • 5.8.1. 检测数据集何时成为不同用户的不同查询概要文件(query profile)的瓶颈,从而影响性能

6. 有效管理MySQL的一个关键点在于对数据库的健康状况进行良好的监控

7. 可用性

7.1. 能够无错误地响应客户的请求

  • 7.1.1. 明确成功的响应

    • 7.1.1.1. 200响应代码
  • 7.1.2. 成功接受请求并承诺异步完成相关工作的响应

    • 7.1.2.1. 202已接受

7.2. 没有要求必须做到100%,因为我们在一个不可避免失败的世界中运作

7.3. 不应该用一个指标来确定所有要求

7.4. 如果一个供应商的竞争优势是分析MySQL性能的特定任务,那么付费是可以给组织带来回报的

  • 7.4.1. SolarWinds数据库性能管理工具

7.5. Percona监控和管理工具是一个成熟的开源选项

  • 7.5.1. PMM

  • 7.5.2. 仪表盘的组织是由Percona社区在监控MySQL性能方面的长期经验指导的

7.6. 将数据库慢查询日志和MySQL PerformanceSchema的输出信息发送到一个集中的位置,然后可以使用像pt-query-digest(Percona Toolkit包中的工具)这样的成熟工具来分析日志,并更深入地了解数据库实例在哪些方面花费了时间

7.7. 在性能倒退的情况下,花费生产之外的精力去调查“发生了什么”远比试图重新创建一个模拟更大代码路径的基准测试套件要具体得多

7.8. 可用性转换为数据库架构的SLI和SLO时

  • 7.8.1. 在处理不可避免的灾难性故障时,哪些功能是不可协商的,哪些功能是“最好拥有的”

  • 7.8.2. 将哪些类型的失败定义为“灾难性的”

  • 7.8.3. “降级功能”是什么样子的

  • 7.8.4. 给定一组可能的故障场景

7.9. 验证可用性的首选方法是从客户端或远程端点来进行访问

7.10. MySQL中有一个Threads_running状态计数器可以作为可用性问题的关键指标

7.11. Thread_running与max_connections的差距,将此差距作为另一个数据点,以检查正在进行的工作是否过载

8. 监控查询延迟

8.1. MySQL引入了许多长期需要的增强功能来跟踪查询运行所需的时间

9. 监控报错

9.1. MySQL客户端在访问运行着的服务的过程中出现错误并不一定意味着服务遭到破坏

9.2. 间歇性错误,通过简单地重试失败的查询就可以解决这些错误

9.3. 错误发生的频率可能是潜在问题的关键指标

  • 9.3.1. 如果报错的频率加快,则是将要出现问题的迹象

9.4. Lock wait timeout

  • 9.4.1. 如果客户端中该报错急剧增加,可能是主节点上的行级锁争用在不断扩大,即事务不断重试但仍然失败

  • 9.4.2. 可能是无法写入的前兆

9.5. Aborted connections

  • 9.5.1. 如果客户端中该报错突然激增,可能表明客户端和数据库实例之间的某个访问层出现了问题

  • 9.5.2. 跟踪这一点会导致大量客户端重试,这会消耗资源

9.6. too many connections

9.7. 操作系统级别的“cannot create new thread

9.8. 应用程序创建和打开的连接数超过了数据库服务器配置中允许的连接数,这个限制可能来自服务器的max_connections变量或者MySQL进程被允许打开的线程数

10. 主动监控

10.1. 不要将所有精力都集中在显示事故发生的指标上,而是应花一些时间来监控可以帮助预防事故的事情

10.2. 磁盘空间使用率增长

  • 10.2.1. 设置多个阈值,其中较低的警告可以设置为仅在工作时间触发,而较高的、更严重的值则作为对非工作时间随叫随到的告警

10.3. 连接数增长

  • 10.3.1. 流量不断增长时,数据库服务器可以支持有限的连接池,这被配置为服务器参数max_connections

  • 10.3.2. 应用程序层打开了大量未使用的连接,导致产生了毫无理由的连接过多的风险

    • 10.3.2.1. 连接的线程数(threads_connected)很高,但运行的线程数(threads_running)仍然很低
  • 10.3.3. 应用程序层正在积极地使用大量的连接,并有导致数据库过载的风险

    • 10.3.3.1. 连接的线程数(threads_connected)和运行的线程数(threads_running)都处于高值并持续增加

10.4. 复制延迟

  • 10.4.1. 能够被视为一种重要的SLI指标,它能引起异常事故

  • 10.4.2. 复制延迟可能会使数据看起来不一致

  • 10.4.3. 即使复制延迟从未达到影响客户体验的程度,如果偶然出现,这仍然是一个比较明显的迹象,说明当前配置下源节点写入设备的性能要强于副本节点,这可能预示系统写容量出现不足

10.5. I/O使用率

  • 10.5.1. “尽可能多地在内存中工作,因为这样更快”

    • 10.5.1.1. 数据库工程师不断努力的目标之一
  • 10.5.2. 不要从磁盘读取太多的数据,否则查询就只能等待那些宝贵的I/O周期

  • 10.5.3. iostat这样的工具可以监控I/O等待

  • 10.5.4. 如果数据库服务器有很多线程位于IOwait状态,则需要监控发出告警,这表示它们正在队列中等待某些磁盘资源可用

10.6. 自增键空间

  • 10.6.1. 自动递增主键在默认情况下被创建为有符号整数,并且可能会耗尽键空间

  • 10.6.2. 为所有使用自增主键的表监控剩余整数空间是一个简单的操作,但几乎可以肯定的一点是,它会在将来为你避免一些重大事故,因为可以提前预测需要更大的键空间

  • 10.6.3. 使用了PMM及其Prometheus导出器(exporter),那么已经自带监控方法,你需要做的就是开启collect.auto_increment.columns设置

10.7. 创建备份/恢复时间

  • 10.7.1. 监控将备份从文件恢复到运行的数据库(该数据库自创建备份以来还一直在复制所有更改)需要多长时间

  • 10.7.2. 功能分片(Functional sharding)是指将服务于特定业务功能的特定表分割到一个专用的集群中,以便单独管理该数据集的正常运行时间、性能甚至访问控制

  • 10.7.3. 水平分片(Horizontal sharding)是指当数据集的大小超过了可以在单个集群中可靠地提供服务的规模时,将它拆分为多个集群,并从多个节点提供数据,这依赖于某种查找机制来定位所需的数据子集

11. 长期性能

11.1. 业务节奏

  • 11.1.1. 业务节奏可能意味着峰值流量时间比“平均值”大几个数量级,如果数据库基础架构没有准备好,将产生很多不良结果

  • 11.1.2. 业务周期可能会因业务所满足的客户需求而大不相同

  • 11.1.3. 了解业务周期以及对业务收入、声誉的影响至关重要

11.2. 业务的长期规划

  • 11.2.1. 为未来的容量做规划

  • 11.2.2. 预见何时需要重大改进,何时增量修改就够了

  • 11.2.3. 为运行基础架构增加的成本做规划

11.3. 提高透明度,重点是跟踪结果而不是输出

11.4. 对平均值说不

  • 11.4.1. 平均值的数据点图很可能会让你产生错误的安全感

11.5. 与百分位为友

  • 11.5.1. 百分位依赖于在给定的时间范围内对数据点进行排序,并根据目标百分位移除最高值的数据点(例如,如果要寻找95百分位,则移除最顶端的5%)

11.6. 使用SLO来指导整体架构

  • 11.6.1. 在业务增长的同时保持良好一致的客户体验不是一件容易的事

  • 11.6.2. 随着业务规模的增长,保持相同的SLO都将变得越来越困难,更不用说制定更雄心勃勃的SLO了

  • 11.6.3. 你希望实现的SLO越严格,工作成本就越高,因为每秒的数据库事务数峰值或数据量也会呈数量级的方式增长

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三维模型OSGB格式轻量化顶点压缩主要技术方法分析

三维模型OSGB格式轻量化顶点压缩主要技术方法分析 在三维模型应用中,轻量化处理是提高数据传输效率、减少渲染时间和优化用户体验的重要手段。而OSGB格式是一种常见的三维模型格式,在进行轻量化处理时,顶点压缩是一种常用的技术方法。本文将…

Redis 十大数据类型

Redis数据类型都有哪些? Redis支持丰富的数据类型,那么具体在Redis7中都有哪些数据类型呢?请看下图: 官网介绍:https://redis.io/docs/data-types/。 其中,String、Hash、List、Set、Sorted Set等类型是大…

爬虫逆向实战(十五)--阿某某营登录

一、数据接口分析 主页地址:阿某某营 1、抓包 通过抓包可以发现登录接口是Users/Login 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个s加密参数 请求头是否加密? 无响应是否加密? 无cookie是…

2022年电赛C题——小车跟随行驶系统——做题记录以及经验分享

前言 自己打算将做过的电赛真题,主要包含控制组的,近几年出现的小车控制题目,自己做过的真题以及在准备电赛期间刷真题出现的问题以及经验分享给大家 这次带来的是22年电赛C题——小车跟随行驶系统,这道题目指定使用的是TI的单片…

uniapp微信小程序区分正式版,开发版,体验版

小程序代码区分是正式版,开发版,还是体验版 通常正式和开发环境需要调用不同域名接口,发布时需要手动更换 或者有些东西不想在正式版显示,只在开发版体验版中显示,也需要去手动隐藏 官方没有明确给出判断环境的方法&a…

web实现酷炫的canvas粒子动画背景

文章目录 前言一、particle-bg1. git地址:2. 安装3. 使用4. 完整demo 二、tsParticles1. 源码地址:2. 安装3. 引入4. 使用5. 几个例子5.1 ts粒子五彩纸屑烟花5.2 多粒子产卵器-用tsParticles制作5.3 ts粒子鼠标吸引力5.4 粒子烟花 源码地址完结 前言 粒…

C++--深入类和对象(上)

引言: 本篇博客将深入探究C中的类和对象。我们将从普通高校教学点开始,逐步介绍类的定义、对象的创建和使用,以及类与对象之间的关系。通过详细讲解访问控制和成员函数,我们将揭示封装的重要性以及如何实现数据的隐藏和安全性。 目…

Docker容器:docker基础概述、安装、网络及资源控制

文章目录 一.docker容器概述1.什么是容器2. docker与虚拟机的区别2.1 docker虚拟化产品有哪些及其对比2.2 Docker与虚拟机的区别 3.Docker容器的使用场景4.Docker容器的优点5.Docker 的底层运行原理6.namespace的六项隔离7.Docker核心概念 二.Docker安装 及管理1.安装 Docker1.…

图数据库_Neo4j基于docker服务版安装_Neo4j Desktop桌面版安装---Neo4j图数据库工作笔记0004

然后我们来看看如何用docker来安装Neo4j community server 首先去执行docker pull neo4j:3.5.22-community 去拉取镜像 然后执行命令就可以安装了 可以用docker ps查看一下 看看暴露了哪些端口 然后再看一下访问一下这个时候,要用IP地址了注意 然后再来看一下安装Desktop 去下…

如何在前端实现WebSocket发送和接收UDP消息(多线程模式)

目录 简介:步骤1:创建WebSocket连接步骤2:创建Web Workers步骤3:发送和接收UDP消息(多线程模式)结束语: 简介: 本文将继续介绍如何在前端应用中利用WebSocket技术发送和接收UDP消息…

数学建模的概念和学习方法(什么是数学建模)

一、初步认识数学建模 数学建模是将数学方法和技巧应用于实际问题的过程。它涉及使用数学模型来描述和分析现实世界中的现象、系统或过程,并通过数学分析和计算来预测、优化或解决问题。数学建模可以应用于各种领域,包括自然科学、工程、经济学、环境科学…

Effective C++学习笔记(8)

目录 条款49:了解new-handler的行为条款50:了解new和delete的合理替换时机条款51:编写new和delete时需固守常规条款52:写了placement new也要写placement delete条款53:不要轻忽编译器的警告条款54:让自己熟…

XenDesktop5.6如何连接数据库

Citrix在数据库的连接方式上一直不统一,但是也还是有迹可循的。 经过了好长时间的下载以后,今天终于有时间来测试一下最新版本的XenDesktop 5 SP1,由于结合了其他组件和环境的需要,所以,选择了独立部署数据库&#xf…

Microsoft 图像BERT,基于大规模图文数据的跨模态预训练

视觉语言任务是当今自然语言处理(NLP)和计算机视觉领域的热门话题。大多数现有方法都基于预训练模型,这些模型使用后期融合方法融合下游任务的多模态输入。然而,这种方法通常需要在训练期间进行特定的数据注释,并且对于…

[JavaWeb]【一】入门JavaWeb开发总概及HTML、CSS、JavaScript

目录 一 特色 二 收获​编辑 三 什么是web? 四 网站的工作流程 五 web网站的开发模式​编辑 六 web开发课程学习安排 七、初始web前端 八 HTML、CSS 8.1 什么是HTNL\CSS(w3cschool) 8.2 HTML快速入门 8.3 VS Code开发工具 8.3.1 插件 8.3.2 主题(改变颜色&…

vue组件封装——类似bootstraptable的模糊搜索功能,支持语音搜索

插件地址 懒得写了,直接上插件地址去看吧

后端返回图片资源错误404,前端使用默认图片

后端返回的图片资源可能会因为各种原因(后台误删,地址更改未及时更新,损毁)出现无法展示的情况,比如这种报错 就会导致图片资源错误,页面出现这种情况 用户体验很不好,为了改善这种情况&#xf…

从视觉装备到智能驾驶,天准科技能否打造第二增长极?

智能网联汽车已经成为了上市公司跨界布局的热门赛道。 天准科技是工业视觉智能装备领域的龙头企业,主要客户包括苹果、三星等企业。招股说明书显示,2016年至2018年,天准科技来源于苹果公司及其供应商的收入合计占比达到49.98%、67.99%及76.0…

角色入门01----MetaHuman创建角色

创建网址Epic Games 创建完成后,可以在bridge里边下载自己的模型,导入他。我们想用小白人控制他,还要导入第三人称游戏包,把小白人蓝图拿出来。 把小白人的蓝图复制到自己新建的文件夹,把下载好的metaHunmen的骨骼全部…