我们目前有一个系统,有 20 个 SOA 服务,有一个主 mysql 数据库和 2 个从节点。我们目前在数据库中有 10 GB 的数据。我们有一个需求,其中表中的数据将显着增加。我们希望在继续实现之前对系统进行压力测试。对于这种分布式环境,什么样的压力测试才有意义?
此外,在执行压力测试时,我可以查看延迟和指标,例如为 90% 的服务请求提供服务的延迟是多少。服务还有其他好的指标吗?我应该寻找 mysql 数据库的哪些指标?
谢谢
最佳答案
这里有一些想法:
- 设置一个测试数据库并将额外的数据加载到您期望增加的表中;使用您期望增加的倍数,例如,如果您期望表增加 2000 行,则向您的测试表添加 4000 行。
- 启用slow query logging在 MySQL 中。
- 确保 SOA 服务器中的日志记录级别足够详细,以便调试压力测试中的错误。
- 使用负载测试工具,例如 JMeter快速连续地针对每个服务运行多个请求。使用您期望的每秒请求数的倍数;我通常会增加 2 倍、4 倍、8 倍等预期请求数量。
- 依次针对每个单独的服务重复上述测试。
- 使用“典型”服务组合重复上述测试 - 例如如果您期望服务 1 的请求数量是服务 2 的两倍,那么请在测试中反射(reflect)这一点。
- 如果您还想测试可靠性,请尝试在一个或两个 MySQL 从属节点脱机的情况下重复 JMeter 测试。
JMeter 应该会为您提供所需的所有延迟信息。我喜欢使用的另一个有用的“真实世界”数据点形式 JMeter 是 90% 查询时间,它是大于或等于测试响应的 90% 的响应时间值。
关于database - 基于分布式SOA架构的系统压力测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978517/