专栏首页喵了个咪的博客空间Grpc — 整体性能测试

Grpc — 整体性能测试

当然最最最重要的就是性能,在使用RPC的场景下对于多个程序通讯完成业务所消耗的性能是有巨大挑战的,笔者也做了一套完整的性能测试大家可以继续往下看。

附上:

喵了个咪的博客:w-blog.cn

博文实例demo:GitHub - sunmi-OS/grpc-php-to-golang-demo

grpc官网:grpc / grpc.io

protobuf代码仓库:Releases · protocolbuffers/protobuf · GitHub

一,服务器配置

  • E5 - 2680V2 * 4
  • 8G ddr3 1600Mhz
  • ab工具压测

分别对以下两种场景进行测试:

  • GO -> (Grpc) -> GO
  • PHP -> (Grpc) -> GO
  • GO -> (HTTP) -> GO
  • PHP -> (HTTP) -> GO

GO通过一个开发一个http的api来进行rpc调用,下面称为api_client:

二,基准线

压测需要一个基准线作为参考

PHP直接echo 基准线是16K

go echo 基准是 20k

go echo -k 基准是74K

三,GO -> (Grpc) -> GO

CPU资源消耗 363%,压力17K,相对20K基准差距3K

使用 -k 维持链接 CPU资源消耗 358%,压力28K,相对74K基准差距46K

四,PHP -> (Grpc) -> GO

资源消耗396%,压力3.5K,相对16K基准差距12.5K

-k 资源消耗393%,压力3.4K,相对16K基准差距12.6K

压测结果

五,GO -> (HTTP) -> GO

资源消耗361%,压力8K,相对74K基准差距66K

-k资源消耗357%,压力11K,相对74K基准差距63K

六,PHP -> (HTTP) -> GO

资源消耗386%,压力6.8K,相对16K基准差距9.2K

七,结论

  • GO 基准 74k
  • PHP 基准 16k
  • GO -> (Grpc) -> GO 压力28K
  • PHP -> (Grpc) -> GO 压力 3.5K
  • GO -> (HTTP) -> GO 压力8.3K
  • PHP -> (HTTP) -> GO 压力6.8K

更具整体结果得到以下结论:

  • 对于GO与GO之前通讯Grpc远远优于http协议
  • PHP调用GO提供的服务,都有很大的开销,http整体资源消耗和并发能力优于Grpc,Grpc依赖太重导致了PHP引入文件很慢,PHP更时候HTTP调用方式

PS:那么有没有什么方式只需要开发一次就能都支持HTTP和Grpc,PHP调用http,Go调用Grpc,因此就有了后面的Grpc-gateway的内容了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PhalApi视频教程

    ##PhalApi视频教程 先在这里感谢以下录制小组的同学,是你们让世界看到PhalApi的视频教程! A西瓜妹子、听风不语、彩色的雨、Catch、喵了个咪、d...

    喵了个咪233
  • KONG网关 — 丰富的插件

    为什么kong这么火热呢?当然是它拥有强大的插件群来解决我们本来需要重复手动配置或者需要自己实现的内容,kong在1.X版本加强了对于插件的支持,官方提供的插件...

    喵了个咪233
  • 探索PHP7(一)--性能

    #探索PHP7(一)--性能# ? ##前言## 在2015年12月2号,鸟哥的在开源中国发布的新闻写在 PHP 7 发布之际一些话,小编意识到从8月份发布第一...

    喵了个咪233
  • 16.4 配置Tomcat监听80端口

    配置Tomcat监听80端口目录概要 vim /usr/local/tomcat/conf/server.xml Connector port="8080" p...

    运维小白
  • Android使用Canvas对象实现刮刮乐效果

    在淘宝、京东等电商举办活动的时候,经常可以看到在移动客户端推出的各种刮奖活动,而这种活动也受到了很多人的喜爱。从客户端的体验来说,这种效果应该是通过网页来实现的...

    砸漏
  • Confluence 6 生产环境备份策略 原

    一旦你的 Confluence 安装实例中超过了上千的页面,相对数据库自带的数据备份来说,XML 的备份方案就显得没有那么有效了。XML 的备份方法需要占用服务...

    HoneyMoose
  • 利用Xtrabackup进行mysql增量备份和全量备份

    现在xtrabackup版本升级到了8.0,但是只对mysql8.0才有支持, 我们这还是使用2.4, 但是2.4相比之前的2.1有了比较大的变化:innoba...

    憧憬博客
  • django--ajax的使用,应用

    AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服...

    测试开发社区
  • 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数

    一、构造函数初始化列表 推荐在构造函数初始化列表中进行初始化 构造函数的执行分为两个阶段 初始化段 普通计算段 (一)、对象成员及其初始化 #inclu...

    s1mba
  • RHCE培训笔记-4

    每个用户在创建的时候都会有一个默认权限,这个默认权限是由 umask值来决定的,又称之为 反掩码

    Elapse

扫码关注云+社区

领取腾讯云代金券