注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

基于wordpress与gnost下的Apache、Nginx 与 Node.js 性能比较  

2016-11-30 19:23:38|  分类: 超级linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
什么是Ghost@nodejs

Ghost 是一款类似于wordpress功能的开源搏客系统。但是GHost的最大特点,它基于nodejs,什么都是新的。

事实上在社区的测试中,Ghost还因它是是基于 Nodejs这个新兴服务器的 ,其并发能力强过 WordPress 很多。

Ghost 的缺点也是什么都是新的。

目前,GHost对移动端而言,它的浏览器加载性能优化不是特别好。但是就功能而言,Ghost还有很多不足于Wordpress的地方。

Apache、Nginx 和 Node.js 的使用的配置对比

Apache

  1. $: curl -i http://localhost/index.html

  2. HTTP/1.1 200 OK

  3. Date: Sun, 30 Oct 2016 15:35:44 GMT

  4. Server: Apache

  5. Last-Modified: Sun, 30 Oct 2016 14:13:36 GMT

  6. ETag: "2cf2-54015b280046d"

  7. Accept-Ranges: bytes

  8. Content-Length: 11506

  9. Cache-Control: max-age=600

  10. Expires: Sun, 30 Oct 2016 15:45:44 GMT

  11. Vary: Accept-Encoding

  12. Content-Type: text/html

Apache 配置了 “event mpm”。

Nginx

  1. $: curl -i http://localhost/index.html

  2. HTTP/1.1 200 OK

  3. Server: nginx/1.10.1

  4. Date: Sun, 30 Oct 2016 14:17:30 GMT

  5. Content-Type: text/html

  6. Content-Length: 11506

  7. Last-Modified: Sun, 30 Oct 2016 14:13:36 GMT

  8. Connection: keep-alive

  9. Keep-Alive: timeout=20

  10. ETag: "58160010-2cf2"

  11. Accept-Ranges: bytes

Nginx 包括几个调整:sendfile ontcp_nopush ontcp_nodelay on

Node.js

  1. $: curl -i http://127.0.0.1:8080

  2. HTTP/1.1 200 OK

  3. Content-Length: 11506

  4. Etag: 15

  5. Last-Modified: Thu, 27 Oct 2016 14:09:58 GMT

  6. Content-Type: text/html

  7. Date: Sun, 30 Oct 2016 16:39:47 GMT

  8. Connection: keep-alive

在静态测试中使用的 Node.js 服务器是从头定制的,这样可以让它尽可能更加的轻快——没有使用外部模块(Node 核心模块除外)。

测试结果

Apache、Nginx 与 Node.js 之争 —— WordPress 与 Ghost 的性能大对决

Apache、Nginx 与 Node 的对比:请求负载的性能(每 100 位并发用户)

Apache、Nginx 与 Node.js 之争 —— WordPress 与 Ghost 的性能大对决

Apache、Nginx 与 Node 的对比:用户负载能力(每 1000 个请求)

压力测试

Apache、Nginx 与 Node.js 之争 —— WordPress 与 Ghost 的性能大对决

Apache、Nginx 与 Node 的对比:完成 1000 位用户并发的 100000 个请求耗时

我们可以从结果中得到什么?

从以上结果判断,似乎 Nginx 可以在最少的时间内完成最多请求,换句话来说,Nginx 是最快的 HTTP 服务器。

还有一个相当惊人的事实是,在特定的用户并发数和请求数下,Node.js 可以比 Nginx 和 Apache 更快。

但当请求的数量在并发测试中增加的时候,Nginx 将重回领先的位置,这个结果可以让那些陷入 Node.js 的遐想的人清醒一下。

和 Apache、Nginx 不同的是,Node.js 似乎对用户的并发数不太敏感,尤其是在集群节点。如图所示,集群节点在 0.1 秒左右保持一条直线,而 Apache 和 Nginx 都有大约 0.2 秒的波动。

基于上述统计可以得出的结论是:网站比较小,其使用的服务器就无所谓。然而,随着网站的受众越来越多,HTTP 服务器的影响变得愈加明显。

当涉及到每台服务器的原始速度的底线的时候,正如压力测试所描述的,我的感觉是,性能背后最关键的因素不是一些特定的算法,而实际上是运行的每台服务器所用的编程语言。

由于 Apache 和 Nginx 都使用了 C 语言—— AOT 语言(编译型语言),而 Node.js 使用了 JavaScript ——这是一种 JIT 语言(解释型语言)。这意味着 Node.js 在执行程序的过程中还有额外的工作负担。

这意味着我不能仅仅基于上面的结果来下结论,而要做进一步校验,正如你下面看到的结果,当我使用一台经过优化的 Node.js 服务器与流行的 Express 框架时,我得到几乎相同的性能结论。

全面考虑

逝者如斯夫,如果没有服务的内容,HTTP 服务器是没什么用的。因此,在比较 web 服务器的时候,我们必须考虑的一个重要的部分就是我们希望在上面运行的内容。

虽然也有其它的功能,但是 HTTP 服务器最广泛的使用就是运行网站。因此,为了看到每台服务器的性能的实际效果,我决定比较一下世界上使用最广泛的 CMS(内容管理系统)WordPress 和 Ghost —— 内核使用了 JavaScript 的一颗冉冉升起的明星。

基于 JavaScript 的 Ghost 网页能否胜过运行在 PHP 和 Apache / Nginx 上面的 WordPress 页面?

这是一个有趣的问题,因为 Ghost 具有操作工具单一且一致的优点——无需额外的封装,而 WordPress 需要依赖 Apache / Nginx 和 PHP 之间的集成,这可能会导致显著的性能缺陷。

除此之外,PHP 距 Node.js 之间还有一个显著的性能落差,后者更佳,我将在下面简要介绍一下,可能会出现一些与初衷大相径庭的结果。

PHP 与 Node.js 的对决

为了比较 WordPress 和 Ghost,我们必须首先考虑一个影响到两者的基本组件。

基本上,WordPress 是一个基于 PHP 的 CMS,而 Ghost 是基于 Node.js(JavaScript)的。与 PHP 不同,Node.js 有以下优点:

  • 非阻塞的 I/O

  • 事件驱动

  • 更新颖、更少的残旧代码

  评论这张
 
阅读(42)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017