-
0 码力 |
37 页 |
170.18 KB
| 2 年前 3
-
解析再回头来看这张图。
### 3.1 CPU 使用率
CPU 使用率计算是第一个难点,很难算准,依赖于系统繁忙程度,是否能够及时调度到读取 CPU 使用率相关文件的执行。
#### 3.1.1 CPU 检测场景
过载保护的一个触发条件就是当系统的 CPU 高于一个阈值时,go-zero 会自动触发过载保护,那么我们怎么检测 CPU 使用率呢?
首先,我们要明确需要覆盖的场景,当前无外乎虚机和容器两大类了。而容器里又分为 effective 文件。
这里详细读取 cgroup 和 /proc 下文件的方法我就不细述了,详见 go-zero 代码。
3.1.2 CPU 使用率计算方法(以 cgroup v2 为例)
##### 3.1.2.1 实时 CPU 使用率的计算
• 方法一
$$ cpu usage=1000\times\frac{\Delta usage\times cores}{\Delta system\times go-zero 检测窗口期是 250ms,这样两次检测的 $ \Delta $ periods 就有时是 2 有时是 3,对计算结果造成非常可见的影响。
##### 3.1.2.2 防止 CPU 使用率毛刺
go-zero 里使用了滑动平均算法(Moving Average)来避免 CPU 的毛刺。比如我们看股票价格曲线时,都会有 MA 线,如图,MA 线在价格波动较大时能够反映较长时间段内的价
0 码力 |
13 页 |
1.68 MB
| 2 年前 3
-
扩展策略 ..... 23
2.4.2. 使用 Web 控制台创建 pod 横向自动扩展 ..... 25
2.4.3. 使用 CLI 根据 CPU 使用率创建 pod 横向自动扩展 ..... 27
2.4.4. 使用 CLI 根据内存使用率创建 pod 横向自动扩展对象 ..... 31
2.4.5. 使用 CLI 了解 pod 横向自动扩展状态条件 ..... 38
2.4.5.1 |操作|用户|更多信息|
|---|---|---|
|创建和使用横向 pod 自动缩放器。|开发者|您可以使用 pod 横向自动扩展来指定您要运行的 pod 的最小和最大数量,以及 pod 的目标 CPU 使用率或内存使用率。通过使用 pod 横向自动扩展,您可以自动扩展 pod。|
|操作|用户|更多信息|
|---|---|---|
|安装和使用垂直 pod 自动缩放器。|管理员和开发人员|作为管理员,通过监控资源和工作负载的资源要求,使用垂直 pod 横向自动扩展来指定您要运行的 pod 的最小和最大数量,以及 pod 的目标 CPU 使用率或内存使用率。

## 重要
根据内存使用率自动缩放仅是一项技术预览功能。
在创建了 pod 横向自动扩展后,OpenShift Container
0 码力 |
404 页 |
3.60 MB
| 2 年前 3
-
扩展策略 ..... 24
2.4.2. 使用 Web 控制台创建 pod 横向自动扩展 ..... 26
2.4.3. 使用 CLI 根据 CPU 使用率创建 pod 横向自动扩展 ..... 28
2.4.4. 使用 CLI 根据内存使用率创建 pod 横向自动扩展对象 ..... 30
2.4.5. 使用 CLI 了解 pod 横向自动扩展状态条件 ..... 35
2.4.5.1 |操作|User|更多信息|
|---|---|---|
|创建并使用 pod 横向自动扩展。|开发者|您可以使用 pod 横向自动扩展来指定您要运行的 pod 的最小和最大数量,以及 pod 的目标 CPU 使用率或内存使用率。通过使用 pod 横向自动扩展,您可以自动扩展 pod。|
|安装和使用垂直 pod 自动缩放器。|管理员和开发人员|作为管理员,通过监控资源和资源要求,使用垂直 pod 自动扩展来更好地利用集群资源。作为开发人员,使用垂直 横向自动扩展来指定您要运行的 pod 的最小和最大数量,以及 pod 的目标 CPU 使用率或内存使用率。
在创建了 pod 横向自动扩展后,OpenShift Container Platform 会开始查询 pod 上的 CPU 和/或内存资源指标。当这些指标可用时,pod 横向自动扩展会计算当前指标使用率与所需指标使用率的比率,并相应地扩展或缩减。查询和缩放是定期进行的,但可能需要一到两分钟时间才会有可用指标。
0 码力 |
374 页 |
3.80 MB
| 2 年前 3
-
max-pods。当两个选项都被使用时,这两个选项中的较小的限制为节点上的 pod 数量。超过这些值可导致:
- OpenShift Container Platform 和 Docker 的 CPU 使用率增加。
● 减慢 pod 调度的速度。
- 潜在的内存不足情况(取决于节点中的内存量)。
● 耗尽 IP 地址池。
资源过量使用,导致用户应用程序性能变差。

API 服务器(master)和 etcd 进程的 CPU 使用率会减少:

API 服务器(master)和 etcd 进程的内存使用率也会减少:

) by (pod ansmit_bytes_total[1m]) * 8
irate(container_network_receive_bytes_total[1m]) * 8
内存使用量除以内存限制量,就是使用率,但是后面跟了 and
container_spec_memory_limit_bytes != 0
是因为有些容器没有配置 limit 的内存大小
container_memory_usage_bytes 在 Kubernetes 架构中,是负责各种 API 调用的总入口,重点关注的是吞吐、延迟、错误率这些黄金指标
• apiserver 也会缓存很多数据到内存里,所以进程占用的内存,所在机器的内存使用率都应该要关注
- 采集方式可以参考 categraf 仓库的
k8s/deployment.yaml,大盘可以参考 k8s/apiserver-dash.json
## Kubernetes控制面
0 码力 |
32 页 |
3.27 MB
| 1 年前 3
-
监控服务对外服务和客户端 (浏览器) 访问端口
Alertmanager
9093
告警 web 服务端口
Alertmanager
9094
告警通信端口
5.1.5
磁盘空间要求
组件
磁盘空间要求
健康水位使用率
| TiDB |
日志盘建议最少预留 30 GB。
v6.5.0 及以上版本默认启用了 Fast Online DDL 对添加索引等 DDL 操作进行加速(通过变量tidb_ddl_enable_fast readpool、coprocessor 和 gRPC 的最大并发度限制是可以通过 TiKV 的配置文件进行调
整的。
通过 Grafana 的 TiKV Thread CPU 监控面板可以观察到其实际使用率。如出现多线程模块瓶颈,可以通过增加该
模块并发度进行调整。
5.7.1.3.3
在高并发压力下,TiKV 也未达到 CPU 使用瓶颈,为什么 TiDB 的 CPU 利用率依然很低?
在某些高端设备上,使用的是 该功能的已知问题及其解决方案如下:
• 问题 1:对于以写负载为主的集群,自动调节可能会让工作负载和备份进入一种 “正反馈循环”:备份
会占用较多资源,导致工作负载使用的资源变少。此时,自动调节会误以为资源使用率下降,从而让
备份运行得更加激进。在这种情况下,自动调节实际上失效。
– 解决方法:手动调节 backup.num-threads,限制处理备份的工作线程数量。具体原理如下:
目前,备份过程会涉及大量的
0 码力 |
5095 页 |
104.54 MB
| 1 年前 3
-
解决部分高压力写入情况下可能出现的 Region is Unavailable 问题
- 当内存中的统计信息缓存是最新的时,避免后台作业频繁读取 mysql.stats_histograms 表造成高 CPU 使用率 #24317
• TiKV
- 使用 zstd 压缩 Region Snapshot,防止大量调度或扩缩容情况下出现各节点之间空间差异比较大的问题 #10005
- 解决多种情况下的 OOM readpool、coprocessor 和 gRPC 的最大并发度限制是可以通过 TiKV 的配置文件进行调整的。
通过 Grafana 的 TiKV Thread CPU 监控面板可以观察到其实际使用率。如出现多线程模块瓶颈,可以通过增加该模块并发度进行调整。
###### 4.6.1.3.3 在高并发压力下,TIKV 也未达到 CPU 使用瓶颈,为什么 TiDB 的 CPU 利用率依然很低?
backup-endpoint)的 CPU 使用率。
| backup-endpoint | backup-worker
17:15 | 0% | 1480%
17:20 | 0% | 980%
17:25 | 0% | 1550%
17:30 | 0% | 1553.6%
图 14: img
IO Utilization:参与备份的 TiKV 节点的 I/O 使用率。
| 17.15 |
0 码力 |
2189 页 |
47.96 MB
| 2 年前 3
-
OFF。对于使用 IndexLookUp 和 Limit 并且 Limit 无法下推到 IndexScan 上的读请求,可能会出现读请求的延迟高、TiKV 的 Unified read pool CPU
使用率高的情况。在这种情况下,由于 Limit 算子只需要少部分数据,开启 tidb_enable_ paging,能够减少处理数据的数量,从而降低延迟、减少资源消耗。
##### 2.2.2.5 高可用和容灾
## · 优化备份对集群的影响
Backup & Restore (BR) 增加了备份线程自动调节功能(默认开启)。该功能通过监控集群资源的使用率自动调节备份的线程数的方式,降低备份过程对集群的影响。在某些 Case 验证中,通过增加集群用于备份的资源和开启备份线程自动调节功能,备份的影响可以降低到 10% 以下。
## 用户文档
## · 降低在同步大量表时的同步延时 #3900
* 减少 TiKV 节点宕机后 KV client 恢复的时间 #3191
## - TiDB Data Migration (DM)
* 降低开启 relay 时的 CPU 使用率 #2214
- TiDB Lightning
* 在 TiDB-backend 模式下,默认改用乐观事务进行写入来提升性能 #30953
- Dumpling
* 提升 Dumpling 检查数据库版本时的兼容性 0 码力 |
2852 页 |
52.59 MB
| 2 年前 3 -
readpool、coprocessor 和 gRPC 的最大并发度限制是可以通过 TiKV 的配置文件进行调整的。
通过 Grafana 的 TiKV Thread CPU 监控面板可以观察到其实际使用率。如出现多线程模块瓶颈,可以通过增加该模块并发度进行调整。
###### 4.6.1.3.3 在高并发压力下,TIKV 也未达到 CPU 使用瓶颈,为什么 TiDB 的 CPU 利用率依然很低?
backup-endpoint)的 CPU 使用率。
| backup-endpoint | backup-worker
17:15 | 0% | 1480%
17:20 | 0% | 980%
17:25 | 0% | 1550%
17:30 | 0% | 1553.6%
图 14: img
IO Utilization:参与备份的 TiKV 节点的 I/O 使用率。
| 17.15 | CPU Utilization:参与恢复的 TiKV 节点 CPU 使用率。

图 24: img
IO Utilization:参与恢复的 TiKV 节点的 I/O 使用率。
![Image](/uploads/documents/c 0 码力 |
2259 页 |
48.16 MB
| 2 年前 3
|