OceanBase教程FG196-OceanBase生产性能基线建立实战
目录大纲
Part01-基础概念与理论知识
1.1 性能基线概述
性能基线是指系统在正常运行状态下的性能指标参考值,用于评估系统性能变化和识别性能问题。OceanBase的性能基线包括:
- 系统级性能基线:包括CPU、内存、磁盘、网络等系统资源的使用情况
- 数据库级性能基线:包括QPS、TPS、响应时间、缓存命中率等数据库指标
- 租户级性能基线:包括租户的资源使用情况、查询性能等
- SQL级性能基线:包括SQL语句的执行时间、执行计划等
1.2 性能指标分类
性能指标分类:
- 资源使用指标:CPU使用率、内存使用率、磁盘I/O、网络流量等
- 数据库性能指标:QPS、TPS、响应时间、缓存命中率、锁等待时间等
- 业务性能指标:业务响应时间、吞吐量、并发用户数等
- 可靠性指标:可用性、故障恢复时间、数据一致性等
1.3 性能基线的作用
性能基线的作用:
- 性能监控:作为性能监控的参考依据,识别性能异常
- 性能优化:作为性能优化的目标,评估优化效果
- 容量规划:作为容量规划的依据,预测资源需求
- 故障诊断:作为故障诊断的参考,快速定位问题
- 服务级别管理:作为服务级别协议(SLA)的参考,确保服务质量
,风哥提示:。
Part02-生产环境规划与建议
2.1 性能指标选择
性能指标选择:
- 关键指标:选择对系统性能影响较大的关键指标
- 可测量性:选择能够准确测量的指标
- 相关性:选择与业务需求相关的指标
- 稳定性:选择相对稳定的指标,避免波动过大
2.2 数据采集策略
数据采集策略:
- 采集频率:根据指标的变化频率,选择合适的采集频率
- 采集时间:选择系统正常运行的时间段进行数据采集
- 采集周期:采集足够长的时间,覆盖不同的业务场景
- 数据存储:选择合适的存储方式,确保数据的完整性和可查询性
2.3 基线建立时机
基线建立时机:
- 系统初始化后:系统安装配置完成后,建立初始基线
- 业务稳定后:业务量稳定后,建立正式基线
- 系统变更后:系统升级、配置变更后,更新基线
- 业务增长后:业务量增长后,更新基线
,学习交流加群风哥微信: itpux-com。
Part03-生产环境项目实施方案
3.1 数据采集
数据采集:
- 系统指标采集:使用监控工具采集系统资源使用情况
- 数据库指标采集:使用OceanBase内置视图采集数据库性能指标
- 业务指标采集:使用应用监控工具采集业务性能指标
- SQL指标采集:使用SQL审计功能采集SQL执行情况
案例:数据采集
top -b -n 1 | head -n 20
Tasks: 200 total, 1 running, 199 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.0 us, 2.0 sy, 0.0 ni, 92.0 id, 0.0 wa, 0.0 hi, 1.0 si, 0.0 st
KiB Mem : 65536000 total, 32768000 free, 16384000 used, 16384000 buff/cache
KiB Swap: 16384000 total, 16384000 free, 0 used. 48384000 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12345 oceanbase 20 0 6553600 1638400 131072 S 10.0 2.5 10:00.00 observer
12346 oceanbase 20 0 6553600 1638400 131072 S 5.0 2.5 5:00.00 observer
12347 oceanbase 20 0 6553600 1638400 131072 S 5.0 2.5 5:00.00 observer
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "SELECT * FROM V$OB_SYSSTAT WHERE stat_name IN ('qps', 'tps', 'response_time');"
| stat_id | stat_name| value | avg_value | cnt |,学习交流加群风哥QQ113257174。
+—————————-+———-+——————+——————+———-+
| 1001 | qps | 10000 | 10000 | 1 |
| 1002 | tps | 1000 | 1000 | 1 |
| 1003 | response_time| 5.00 | 5.00 | 1 |
+—————————-+———-+——————+——————+———-+
3.2 基线计算
基线计算:
- 统计方法:使用平均值、中位数、百分位数等统计方法
- 时间窗口:选择合适的时间窗口,如小时、天、周等
- 异常值处理:排除异常值,确保基线的准确性
- 趋势分析:分析性能指标的变化趋势,预测未来性能
案例:基线计算
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "SELECT AVG(value) AS avg_qps, MAX(value) AS max_qps, MIN(value) AS min_qps FROM V$OB_SYSSTAT WHERE stat_name = 'qps' AND sample_time >= DATE_SUB(NOW(), INTERVAL 7 DAY);"
| avg_qps | max_qps | min_qps |
+———+———+———+
| 10000 | 15000 | 5000 |
+———+———+———+
3.3 基线验证
基线验证:
- 合理性验证:验证基线是否合理,是否符合业务需求
- 稳定性验证:验证基线是否稳定,是否存在异常波动
- 一致性验证:验证不同指标之间是否一致,是否存在矛盾
- 准确性验证:验证基线是否准确,是否反映系统的真实性能
,更多视频教程www.fgedu.net.cn。
案例:基线验证
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "SELECT sample_time, value FROM V$OB_SYSSTAT WHERE stat_name = 'qps' AND sample_time >= DATE_SUB(NOW(), INTERVAL 7 DAY) ORDER BY sample_time;"
| sample_time | value |
+———————+——-+
| 2024-01-01 00:00:00 | 10000 |
| 2024-01-01 01:00:00 | 10500 |
| 2024-01-01 02:00:00 | 9500 |
| 2024-01-01 03:00:00 | 9000 |
| 2024-01-01 04:00:00 | 8500 |
| 2024-01-01 05:00:00 | 9000 |
| 2024-01-01 06:00:00 | 9500 |
| 2024-01-01 07:00:00 | 10000 |
| 2024-01-01 08:00:00 | 11000 |
| 2024-01-01 09:00:00 | 12000 |
| 2024-01-01 10:00:00 | 13000 |
| 2024-01-01 11:00:00 | 14000 |
| 2024-01-01 12:00:00 | 15000 |
| 2024-01-01 13:00:00 | 14000 |
| 2024-01-01 14:00:00 | 13000 |
| 2024-01-01 15:00:00 | 12000 |
| 2024-01-01 16:00:00 | 11000 |
| 2024-01-01 17:00:00 | 10000 |
| 2024-01-01 18:00:00 | 9500 |
| 2024-01-01 19:00:00 | 9000 |
| 2024-01-01 20:00:00 | 8500 |
| 2024-01-01 21:00:00 | 9000 |
| 2024-01-01 22:00:00 | 9500 |
| 2024-01-01 23:00:00 | 10000 |
+———————+——-+,更多学习教程公众号风哥教程itpux_com。
3.4 基线监控
基线监控:
- 实时监控:实时监控性能指标,与基线进行对比
- 告警设置:设置告警阈值,当性能指标偏离基线时触发告警
- 趋势分析:分析性能指标的变化趋势,预测未来性能
- 报表生成:生成性能报表,展示性能变化情况
案例:基线监控
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "ALTER SYSTEM SET ob_alarm_threshold_qps = 15000;"
Part04-生产案例与实战讲解
4.1 性能基线建立实战
案例:性能基线建立
需求:为OceanBase生产环境建立性能基线,用于监控和优化系统性能。
,from DB视频:www.itpux.com。
解决方案:按照数据采集、基线计算、基线验证、基线监控的步骤建立性能基线。
实现步骤:
- 确定性能指标
- 采集性能数据
- 计算基线值
- 验证基线合理性
- 设置监控告警
#!/bin/bash
# collect_perf_data.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
for i in {1..7}; do
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "INSERT INTO perf_data (sample_time, stat_name, value) SELECT NOW(), stat_name, value FROM V$OB_SYSSTAT WHERE stat_name IN ('qps', 'tps', 'response_time', 'cache_hit');"
sleep 3600
done
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "SELECT stat_name, AVG(value) AS avg_value, MAX(value) AS max_value, MIN(value) AS min_value, PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY value) AS p95_value FROM perf_data GROUP BY stat_name;"
| stat_name | avg_value | max_value | min_value | p95_value |
+————-+———–+———–+———–+———–+
| qps | 10000 | 15000 | 5000 | 14000 |
| tps | 1000 | 1500 | 500 | 1400 |
| response_time| 5.00 | 10.00 | 2.00 | 8.00 |
| cache_hit | 95.00 | 99.00 | 90.00 | 98.00 |
+————-+———–+———–+———–+———–+
4.2 性能监控实战
案例:性能监控
需求:监控OceanBase生产环境的性能,及时发现性能异常。
解决方案:使用监控工具实时监控性能指标,与基线进行对比,设置告警阈值。
实现步骤:
- 配置监控工具
- 设置监控指标
- 设置告警阈值
- 查看监控报表
vim /etc/prometheus/prometheus.yml
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
– job_name: ‘oceanbase’
static_configs:
– targets: [‘192.168.1.1:9100’]
curl -s http://localhost:9090/api/v1/query?query=oceanbase_qps
“status”: “success”,
“data”: {
“resultType”: “vector”,
“result”: [
{
“metric”: {
“__name__”: “oceanbase_qps”,
“instance”: “192.168.1.1:9100”,
“job”: “oceanbase”
},
“value”: [
1609459200,
“10000”
]
}
]
}
}
4.3 性能优化实战
案例:性能优化
需求:根据性能基线和监控结果,优化OceanBase生产环境的性能。
解决方案:分析性能瓶颈,采取相应的优化措施,验证优化效果。
实现步骤:
- 分析性能瓶颈
- 采取优化措施
- 验证优化效果
- 更新性能基线
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "SELECT * FROM V$OB_SQL_AUDIT WHERE response_time > 1000 ORDER BY response_time DESC LIMIT 10;"
| sql_id | tenant_id | user_name | response_time | sql_text |
+———————+———–+—————-+——————+——————+
| 1234567890abcdef | 1001 | fgedu | 5000 | SELECT * FROM fgedu_table WHERE name = ‘test’ |
| 234567890abcdef1 | 1001 | fgedu | 4000 | SELECT * FROM fgedu_table WHERE id = 1 |
| 34567890abcdef12 | 1001 | fgedu | 3000 | SELECT * FROM fgedu_table WHERE value > 100 |
+———————+———–+—————-+——————+——————+
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "CREATE INDEX idx_name ON fgedu_table(name);"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "SELECT * FROM V$OB_SQL_AUDIT WHERE sql_id = '1234567890abcdef' ORDER BY sample_time DESC LIMIT 1;"
| sql_id | tenant_id | user_name | response_time | sql_text |
+———————+———–+—————-+——————+——————+
| 1234567890abcdef | 1001 | fgedu | 500 | SELECT * FROM fgedu_table WHERE name = ‘test’ |
+———————+———–+—————-+——————+——————+
Part05-风哥经验总结与分享
5.1 最佳实践
OceanBase生产性能基线建立的最佳实践:
- 选择合适的性能指标:根据业务需求和系统特点,选择合适的性能指标
- 采集足够的样本数据:采集足够长的时间和足够多的样本数据,确保基线的准确性
- 排除异常值:排除异常值,确保基线能够反映系统的正常性能
- 定期更新基线:定期更新基线,适应系统和业务的变化
- 结合业务场景:结合业务场景,建立不同业务场景的性能基线
- 使用监控工具:使用专业的监控工具,实时监控性能指标
- 设置合理的告警阈值:设置合理的告警阈值,及时发现性能异常
5.2 常见问题处理
常见问题处理:
- 基线不准确:
- 增加数据采集时间
- 排除异常值
- 重新计算基线
- 告警频繁:
- 调整告警阈值
- 优化系统性能
- 更新基线
- 性能下降:
- 分析性能瓶颈
- 采取优化措施
- 验证优化效果
- 基线过时:
- 定期更新基线
- 适应业务变化
- 重新采集数据
5.3 性能优化建议
性能优化建议:
- 硬件层面:
- 使用高性能服务器
- 增加内存容量
- 使用SSD存储
- 优化网络配置
- 系统层面:
- 优化操作系统参数
- 关闭不必要的服务
- 配置大内存页
- 优化文件系统
- 数据库层面:
- 优化缓存配置
- 优化索引设计
- 优化执行计划
- 配置并行查询
- 定期收集统计信息
- 优化SQL语句
- 应用层面:
- 优化应用代码
- 使用连接池
- 减少数据库访问次数
- 使用缓存中间件
风哥提示:性能基线是系统性能监控和优化的重要参考,需要定期更新和验证
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
