{"id":38598940,"url":"https://github.com/hank-whu/rpc-benchmark","last_synced_at":"2026-01-18T09:31:40.639Z","repository":{"id":27771141,"uuid":"115163904","full_name":"hank-whu/rpc-benchmark","owner":"hank-whu","description":"java rpc benchmark, 灵感源自 https://www.techempower.com/benchmarks/","archived":false,"fork":false,"pushed_at":"2024-04-08T03:42:19.000Z","size":411,"stargazers_count":531,"open_issues_count":60,"forks_count":123,"subscribers_count":31,"default_branch":"master","last_synced_at":"2026-01-17T17:59:31.601Z","etag":null,"topics":["benchmark","dubbo","grpc","motan","rpc","rpc-benchmark","turbo"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hank-whu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-23T02:07:47.000Z","updated_at":"2025-12-03T16:24:02.000Z","dependencies_parsed_at":"2022-08-26T13:42:02.759Z","dependency_job_id":null,"html_url":"https://github.com/hank-whu/rpc-benchmark","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/hank-whu/rpc-benchmark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hank-whu%2Frpc-benchmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hank-whu%2Frpc-benchmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hank-whu%2Frpc-benchmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hank-whu%2Frpc-benchmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hank-whu","download_url":"https://codeload.github.com/hank-whu/rpc-benchmark/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hank-whu%2Frpc-benchmark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28534159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmark","dubbo","grpc","motan","rpc","rpc-benchmark","turbo"],"created_at":"2026-01-17T08:31:45.903Z","updated_at":"2026-01-18T09:31:40.617Z","avatar_url":"https://github.com/hank-whu.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RPC Benchmark\n几乎所有的 RPC 框架都宣称自己是“高性能”的, 那么实际结果到底如何呢, 让我们来做一个性能测试吧.\n\n## 测试结果\n- Round-5 2019-02-11 https://www.jianshu.com/p/cdd94d0853c3\n- Round-4 2018-08-05 https://www.jianshu.com/p/72b98dc67d9d\n- Round-3 2018-05-12 https://www.jianshu.com/p/caf51f5cfbaa\n- Round-2 2018-03-25 https://www.jianshu.com/p/f0f494cfce94\n- Round-1 2018-01-28 https://www.jianshu.com/p/18c95649b1a4\n\n## 测试说明\n - 仅限于Java.\n - 客户端使用JMH进行压测, 32 线程, 3 轮预热 3 轮测试 每轮 10s\n - 每次运行前都会执行 ***killall java***, 但没有在每轮测试时重启操作系统\n - 所有类库版本在发布时都是最新的, 除非存在bug\n - 所有框架都尽量参考该项目自带的Benchmark实现\n - 将会一直持续, 不定期发布测试结果\n - 更多说明请移步: [怎样对 RPC 进行有效的性能测试](https://www.jianshu.com/p/cbcdf05eaa5c)\n\n## 测试用例\n 1. boolean existUser(String email), 判断某个 email 是否存在\n 2. boolean createUser(User user), 添加一个 User\n 3. User getUser(long id), 根据 id 获取一个用户\n 4. Page\u003cUser\u003e listUser(int pageNo), 获取用户列表\n\n## 运行说明\n1. 需要两台机器，一台作为客户端，一台作为服务端\n2. 系统要求为 linux x64, 至少 4GB ram\n3. 客户端需要安装 jdk 11, maven 3\n4. 服务端需要安装 jdk 11\n5. 客户端服务端均需要设置 hosts\n\u003e 10.0.0.88 benchmark-client\u003cbr\u003e\n\u003e 10.0.0.99 benchmark-server\n\n6. 服务端需要添加用户 benchmark, 需要配置成客户端免密登录, 也就是客户端可以通过如下方式访问服务端\n\u003e ssh benchmark@benchmark-server \"ls -lh\"\n\n7. 客户端执行如下命令, 结果输出到 benchmark/benchmark-result\n\u003e git clone https://github.com/hank-whu/rpc-benchmark.git\u003cbr\u003e\n\u003e cd rpc-benchmark\u003cbr\u003e\n\u003e java benchmark.java\n\n## 开发者必读\n1. cd benchmark-base \u0026\u0026 mvn install \n2. 配置好 hosts: benchmark-client benchmark-server\n3. 修改或者实现 xxx-server xxx-client\n4. 启动 Server, 然后启动 Client, 确保能不出错跑完所有测试项目\n5. 提交 Pull Request\n\n## 免责声明\n - 能力所限错误在所难免, 本测试用例及测试结果仅供参考.\n - 如果你认为xx框架的代码或配置存在问题，那么欢迎发起Pull Request.\n - 利益相关: 本测试用例作者同时为 [turbo](https://github.com/hank-whu/turbo-rpc), [undertow-async](https://github.com/hank-whu/undertow-async) 的作者.\n\n## 关注微信公众号: rpcBenchmark\n![rpcBenchmark](https://github.com/hank-whu/rpc-benchmark/raw/master/rpcBenchmark.jpg)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhank-whu%2Frpc-benchmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhank-whu%2Frpc-benchmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhank-whu%2Frpc-benchmark/lists"}