Go、Nginx、Php、Nodejs谁能胜出紫禁之巅

erlib · · 1588 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/52743704

声明:这里的测试框架都是很常用的框架,不去跟一些奇葩但是所谓性能极高的框架进行对比


由于我们在项目中大量使用Iris和nginx这两个Web框架(纯Go语言实现,零内存拷贝),同时也听过很多人问Go的Http性能对比nginx、对比nodejs到底如何,有鉴于此,今天我们就来做一个Web框架性能真实比拼。

测试环境图:

下面从多个维度对4个框架进行对比:Nginx   VS   Nginx-php-fpm   VS  Iris    VS   nodejs-Express


一、 Nginx


并发压力测试100  -  100K


第一张图是在不同并发压力下,每秒处理的请求数

第二张是每秒吞吐的数据量

第三张是99.9%、平均、标准方差的延迟统计,可以看出有0.01%的请求延迟在2秒左右

第四张是单线程统计

(这些图后面不会再解释,请大家自行对比)


这张图是soccket错误和请求总数的对比,这里的比例是100K / 3.5M





二、Nginx-Php-Fpm






三、Iris(Golang)






四、Express-Nodejs










总结:

因为其它的评测往往对比的是Go最慢的框架之一 --标准库,因此这里对比了另外一个常用的最快的框架iris。

从上面图可以看出,Iris和Nginx的速度、请求延迟、吞吐、socket错误率都是差不多的,在延迟方面iris的表现甚至更好,nginx 最大2秒,iris 0.2-0.3秒

nginx-php的并发数是不错的,但是在并发超过数百后,错误率明显上升的非常高

Express这个结果我不知道为什么,可能是没有调优的原因?(这四个框架都没有进行调优)


最后再对比一下二次开发难度,iris因为是基于go的,因此非常非常非常简单,而且二次开发效率非常高,nginx用lua可以做一些事情,但是总是没有直接用同一种语言方便,而且用lua可能存在一些缺陷;Express不清楚,不评价,但是go的网络编程模型应该是比回调的方式简单很多的。


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:erlib

查看原文:Go、Nginx、Php、Nodejs谁能胜出紫禁之巅

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

1588 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传