主题
调优标准
为什么要做
提高系统性能 + 节省公司资源 + 改善用户体验 + 应对未来挑战
所有的系统在开发完之后,多多少少都会有性能问题,我们首先要做的就是想办法把问题暴露出来,例如进行压力测试、模拟可能的操作场景等等,再通过性能调优去解决这些问题。
有些性能问题是时间累积慢慢产生的,到了一定时间自然就爆炸了;而更多的性能问题是由访问量的波动导致的。
所以需要更好的了解自己系统的性能情况,方便业务拓展。
什么时候做
推荐在遵循有效编码规范的前提下完成编码后,再进行性能测试,并且性能测试需有针对性。
有效的编码规范有
1、减少磁盘 I/O 操作、降低竞争锁的使用以及使用高效的算法等等。
2、遇到比较复杂的业务,我们可以充分利用设计模式来优化业务代码。
3、设计商品价格的时候,往往会有很多折扣活动、红包活动,我们可以用装饰模式去设计这个业务。
推荐阅读《整洁代码之道》
在性能测试中,我们根据需求设计并执行压力测试方案。通过模拟高并发、大数据量等极端场景,监测系统的响应时间、吞吐量、资源利用率和并发用户数等指标。
使用性能分析工具实时获取系统在压力下的运行状态,并与预期数据进行对比。
项目上线后,通过日志监控系统收集并分析运行日志,发现潜在的性能问题或故障。
一旦发现异常,启动问题定位与修复流程,并进行压测验证效果。同时,长期跟踪关键性能指标的变化趋势,为系统优化和扩容提供决策依据。
影响指标
主要包括:
时间性能:
- 响应时间(Response Time):从用户发起请求到系统完成该请求并给出响应所需的时间。
- 吞吐量(Throughput):单位时间内系统处理的请求数或任务数,如QPS(Queries Per Second)、TPS(Transactions Per Second)。
- CPU 使用率(CPU Utilization):处理器执行任务所占用的时间比率。
- I/O 延迟(I/O Latency):硬盘、网络等输入输出操作的延迟时间。
空间性能:
- 内存容量与使用率(Memory Capacity and Utilization):系统的总内存大小和当前已使用的内存比例。
- 存储性能(Storage Performance):硬盘读写速度(IOPS: Input/Output Operations Per Second),带宽(Bandwidth),以及磁盘空间利用率。
并发能力:
- 并发用户数(Concurrent Users):系统能够同时服务的用户数量。
- 连接数(Connection Count):服务器可以同时维持的最大连接数。
可靠性与稳定性:
- 平均无故障时间(MTBF, Mean Time Between Failures):两次故障之间系统的平均运行时间。
- 平均修复时间(MTTR, Mean Time To Repair):系统出现故障后恢复到正常运行状态所需的平均时间。
- 可用性(Availability):系统在一定时间内可提供服务的时间占比。
安全性:
- 数据安全(Data Security):包括数据加密、访问控制、防篡改措施的有效性。
- 防御攻击能力(Defensive Capability):防火墙效率、DDoS防护能力等。
- 漏洞管理(Vulnerability Management):发现和修复软件漏洞的速度和效果。
扩展性:
- 可扩展性(Scalability):系统能否在增加资源的情况下线性地提高性能。
网络性能:
- 网络延迟(Network Latency):数据在网络中传输所需的时间。
- 带宽利用率(Bandwidth Utilization):网络通信中的实际带宽消耗与最大带宽的比例。
资源利用率:
- 缓存命中率(Cache Hit Ratio):缓存被有效利用的程度。
- 进程/线程调度效率:操作系统分配和管理计算资源的能力。
根据具体的业务场景和需求,不同的指标会有不同的优先级。通过监控和优化这些性能指标,可以确保系统高效稳定地运行,并满足用户的期望。