0908_性能测试实战

Redmine 性能监控分析与调优

性能测试策略

性能测试整体流程

首先,需要了解性能整体的知识体系与相关方法:

其次,需要了解性能测试过程中需要具体执行的操作步骤,包含以下内容:

相关环境

压力测试

性能监控

相关环境

监控信息

  1. 服务器资源信息,配置教程: PrometheusExporter 配置服务器资源信息
  2. 数据库服务信息,配置教程:数据库配置 Grafana 信息
  3. JMeter 压测过程信息, 配置教程: Jmeter 实时压测结果收集

实现原理

目标 实现工具
施加压力 JMeter
数据收集 Prometheus(收集数据)
数据展示 Grafana

性能瓶颈分析

常规摸高测试和负载测试
  • 测试方法:

    • 使用 JMeter 进行常规摸高测试和负载测试,逐渐增加并发用户数,观察系统的性能表现。
      初始并发用户数设置为 10,每隔 5 分钟增加 10 个用户,直到达到目标并发用户数 100。
      测试结果:
  • 在 100 个并发用户时,系统响应时间逐渐变长,但仍在可接受范围内。

  • 达到 110 个并发用户时,系统开始出现明显的响应时间增加和错误率上升。

  • 在 200 个并发用户时,系统的响应时间显著增加,错误率明显上升,用户体验显著下降。

瓶颈分析:MariaDB 服务

在增加 Redmine 实例数量后,重新进行压测,发现 MariaDB 服务成为新的性能瓶颈。此时,由于 MariaDB 的最大连接数限制为 10,无法满足高并发请求的需求。

  • 验证方法:

    • 检查 MariaDB 服务的连接数配置和监控数据,确认 MariaDB 服务在高并发情况下的连接数使用情况。
      使用监控工具(如 Prometheus 和 Grafana)观察 MariaDB 服务的 CPU、内存、连接数等资源使用情况。
  • 解决方案:

    • 查看最大连接数配置,SHOW VARIABLES LIKE 'max_connections';
    • 调整 MariaDB 的最大连接数配置,增加连接池大小,确保能够处理更多并发请求SET GLOBAL max_connections = xxx;
    • 进一步优化数据库查询,减少数据库负载,提高响应速度。
  • 参考资料:

总结

  • 在对 Redmine 进行性能测试和监控之后,通过对各项数据的分析,可以清晰地识别出系统的性能瓶颈,并给出相应的优化建议。
  • 通过数据库优化、系统资源优化,提升 Redmine 的性能和稳定性,确保在高并发用户下的良好表现。
  • 持续进行性能监控和优化,有助于及时发现并解决潜在的性能问题,保证系统的长久稳定运行。

相关面试题

https://interview.tutorial.hogwarts.ceshiren.com/python_programming/v2/L1/interview/

压测环境相关部署脚本

  • 视频地址:
  • 脚本配置信息:

JMeter

配置 场景1 场景2 场景3
用户 1000 500 500
持续时间 10 10 100
运行次数 1 2 2
TPS 100 tps 100 tps 10 tps

用户数*运行次数/持续时间 = 100tps