rpc-benchmark

RPC 性能测试套件
授权协议 Apache
开发语言 Java
所属分类 开发工具、 性能测试和优化
软件类型 开源软件
地区 国产
投 递 者 芮叶秋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

RPC Benchmark

几乎所有的 RPC 框架都宣称自己是“高性能”的, 那么实际结果到底如何呢, 让我们来做一个性能测试吧.

测试结果

测试说明

  • 仅限于Java.

  • 客户端使用JMH进行压测, 32 线程, 10 次预热, 3 次运行.

  • 每次运行前都会执行 killall java, 但没有在每轮测试时重启操作系统.

  • 所有类库版本在发布时都是最新的, 除非存在bug.

  • 所有框架都尽量参考该项目自带的Benchmark实现.

  • 将会一直持续, 不定期发布测试结果.

测试用例

  1. boolean existUser(String email), 判断某个 email 是否存在.

  2. boolean createUser(User user), 添加一个 User.

  3. User getUser(long id), 根据 id 获取一个用户.

  4. Page listUser(int pageNo), 获取用户列表.

运行说明

  1. 需要两台机器,一台作为客户端,一台作为服务端.

  2. 系统要求为 linux x64, 至少 4GB ram.

  3. 客户端需要安装 git, jdk 9, scala 12, maven 3.

  4. 服务端需要安装 jdk 9.

  5. 客户端服务端均需要设置 hosts.

10.0.0.88 benchmark-client
10.0.0.99 benchmark-server

  1. 服务端需要添加用户 benchmark, 需要配置成客户端免密登录, 也就是客户端可以通过如下方式访问服务端.

ssh benchmark@benchmark-server "ls -lh"

  1. 客户端执行如下命令, 结果输出到 benchmark/benchmark-result.

git clone https://github.com/hank-whu/rpc-benchmark.git
cd rpc-benchmark
scala benchmark.scala

  • 1、准备 使用ab(Apache-BenchMark)压测consumer的Controller,触发调用。 dubbo的consumer发起调用,调用provider暴露的接口。 provider做1w次循环,生成随机数做累加。 2、ab压测情况 2.1、1k 数据 情况一: 三台同机房的机器,利用两台consumer请求同一台provider 机器: consumer1 2h4g -se

  • 源码地址:https://github.com/lhj502819/IRpc/tree/v4 系列文章: 注册中心模块实现 路由模块实现 序列化模块实现 过滤器模块实现 自定义SPI机制增加框架的扩展性的设计与实现 基于线程和队列提升框架并发处理能力 框架容错性相关设计 通过SpringBoot-Starter接入SpringBoot 为什么需要序列化? 计算机底层的传输都是通过字节流的方式进行传

 相关资料
  • 性能测试应该有两个方向: 单接口压力测试 生产环境模拟用户操作高压力测试 生产环境模拟测试,目前我们都是交给公司的 QA 团队专门完成的。这块我只能粗略列举一下: 获取 1000 用户以上生产用户的访问日志(统计学要求 1000 是最小集合) 计算指定时间内(例如 10 分钟),所有接口的触发频率 使用测试工具(loadrunner, jmeter 等)模拟用户请求接口 适当放大压力,就可以模拟

  • 目标 对ShardingSphere-JDBC,ShardingSphere-Proxy及MySQL进行性能对比。从业务角度考虑,在基本应用场景(单路由,主从+加密+分库分表,全路由)下,INSERT+UPDATE+DELETE通常用作一个完整的关联操作,用于性能评估,而SELECT关注分片优化可用作性能评估的另一个操作;而主从模式下,可将INSERT+SELECT+DELETE作为一组评估性能的

  • go1.6.2 linux/amd64 Ubuntu 16.04 amd64 虚拟机 2 个处理器核心 2 GB 内存 并行测试 BenchmarkParallelHprose2-2 200000 9239 ns/op 789 B/op 25 allocs/op BenchmarkParallelHprose2Unix-2

  • 主要内容:测试命令格式,执行测试命令为了解 Redis 在不同配置环境下的性能表现,Redis 提供了一种行性能测试工具 redis-benchmark(也称压力测试工具),它通过同时执行多组命令实现对 Redis 的性能测试。 性能测试的作用是让我们了解 Redis 服务器的性能优劣。在实际的业务场景中,性能测试是必不可少的。在业务系统上线之前,我们都需要清楚地了解 Redis 服务器的性能,从而避免发生某些意外情况,比如数据量过

  • Redis 性能测试是通过同时执行多个命令实现的。 语法 redis 性能测试的基本命令如下: redis-benchmark [option] [option value] 实例 测试存取大小为100字节的数据包的性能。 $ redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100 PING_INLINE: 85910.65 requests per se

  • 环境 推荐硬件环境 CPU: 32 Cores RAM: 128 GB NIC: 10Gb Ethernet 至少需要5台机器: Jenkins * 1: ${host-jenkins} Sysbench * 1: ${host-sysbench} ShardingSphere-Proxy * 1: ${host-proxy} MySQL Server * 2: ${host-mysql-1},

  • 测试方式 通过 apache benchmark 工具进行压力测试 测试环境 JDK信息: java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) 硬件信息 处理器:2.3

  • 单元测试 单元测试例子放到自己开发的模块下。 如果依赖了第三方服务端(例如Zookeeper),请手动加入 profile。参考 registry-zookeeper 模块代码。 如果依赖了其它模块要集成测试,请放到 test/test-intergrated 模块中。 如果还依赖了第三方服务端(例如Zookeeper),请放到 test-intergrated-3rd 模块中。 性能测试 关闭了