hi-nginx-javascript vs node.js
hi-nginx-1.4.9已经支持javascript,这意味着把javascript应用于后端开发,将不再只有nodejs这唯一的途径和方法。由于java本身对javascript的极好支持,使得在hi-nginx中,可以直接在javascript脚本中使用java——相当于把java嵌入了javascript。因此,你随时可以用java写个库或者类,然后在javascript中随便玩。这比用c/c++写node.js扩展舒服多了。
那么,hi-nginx-javascript VS node.js,如何呢?来个node.js (6.12.0)helloworld比较下。
fedora 25,4g,2core,i5,笔记本
node.js:
var http = require('http');
http.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
response.end('Hello World');
}).listen(8888);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
hi-nginx-javascript:
location / {
hi_need_cache off;
hi_cache_expires 5s;
hi_need_kvdb on;
hi_kvdb_size 10;
hi_kvdb_expires 5s;
hi_need_cookies on;
hi_need_headers on;
hi_need_session on;
hi_session_expires 300s;
hi_javascript_lang javascript;
hi_javascript_extension js;
#hi_javascript_script javascript/index.js;
hi_javascript_content "hi_res.content='hello,world';hi_res.status=200;";
}
使用ab作为压力测试工具:ab -c 1000 -n 500000。从最终稳定结果RPS来看,n=500000对nodejs来说是越不过去,
Completed 50000 requests
Completed 100000 requests
Completed 150000 requests
apr_socket_recv: Connection reset by peer (104)
Total of 162214 requests completed
而hi-nginx-javascript均值在14000多左右:
Server Software: nginx/1.14.0
Server Hostname: 127.0.0.1
Server Port: 8086 Document Path: /
Document Length: 11 bytes Concurrency Level: 1000
Time taken for tests: 34.366 seconds
Complete requests: 500000
Failed requests: 0
Total transferred: 139000000 bytes
HTML transferred: 5500000 bytes
Requests per second: 14549.43 [#/sec] (mean)
Time per request: 68.731 [ms] (mean)
Time per request: 0.069 [ms] (mean, across all concurrent requests)
Transfer rate: 3949.94 [Kbytes/sec] received
把n降低至100000,nodejs偶尔能完成测试,RPS的最好成绩是8900多,其值在6000至9000间徘徊:
Server Software:
Server Hostname: 127.0.0.1
Server Port: 8888 Document Path: /
Document Length: 11 bytes Concurrency Level: 1000
Time taken for tests: 11.114 seconds
Complete requests: 100000
Failed requests: 0
Total transferred: 11200000 bytes
HTML transferred: 1100000 bytes
Requests per second: 8997.62 [#/sec] (mean)
Time per request: 111.141 [ms] (mean)
Time per request: 0.111 [ms] (mean, across all concurrent requests)
Transfer rate: 984.11 [Kbytes/sec] received
而hi-nginx-javascript则依然表现出众,与n=500000是差不多:
Server Software: nginx/1.14.0
Server Hostname: 127.0.0.1
Server Port: 8086 Document Path: /
Document Length: 11 bytes Concurrency Level: 1000
Time taken for tests: 7.038 seconds
Complete requests: 100000
Failed requests: 0
Total transferred: 27800000 bytes
HTML transferred: 1100000 bytes
Requests per second: 14208.52 [#/sec] (mean)
Time per request: 70.380 [ms] (mean)
Time per request: 0.070 [ms] (mean, across all concurrent requests)
Transfer rate: 3857.39 [Kbytes/sec] received
结论:
hi-nginx-javascript 完胜 nodejs。
hi-nginx github: https://github.com/webcpp/hi-nginx
hi-nginx-javascript vs node.js的更多相关文章
- 京JS 2013 - A two-day conference in Beijing for the JavaScript and Node.js community
京JS 2013 - A two-day conference in Beijing for the JavaScript and Node.js community 关于技术大会 京JS 2013 ...
- 创业笔记-Node.js入门之JavaScript与Node.js
JavaScript与Node.js JavaScript与你 抛开技术,我们先来聊聊你以及你和JavaScript的关系.本章的主要目的是想让你看看,对你而言是否有必要继续阅读后续章节的内容. 如果 ...
- JavaScript(Node.js)+ Selenium 实现淘宝抢单
JavaScript(Node.js)+ Selenium 淘宝抢单 为了买买买我也是拼了,看了一点selenium的资料,随便写的. 程序写的比较烂,但是够我自己用了,望各路大牛指教. 使用说明: ...
- 基于Debian系统配置Nginx环境的Node.js应用教程
Node.js,是当前比较流行的能够动态的快速响应内容的JavaScript框架,在有些环境下比我们使用的PHP应用都能够提高效率.目 前,Node.js可以与我们常用的Nginx.Apache等服务 ...
- JavaScript(Node.js)+ Selenium自动化测试
Selenium is a browser automation library. Most often used for testing web-applications, Selenium may ...
- nginx反向代理node.js获取客户端IP
使用Nginx做node.js程序的反向代理,会有这么一个问题:在程序中获取的客户端IP永远是127.0.0.1 如果想要拿到真实的客户端IP改怎么办呢? 一.首先配置Nginx的反向代理 proxy ...
- 安装Nginx并为node.js设置反向代理
最近看了反向代理和正向代理的东西,想到自己的node.js服务器是运行在3333端口的,也没有为他设置反向代理,node.js项目的一些静态文件是完全可以部署在Nginx上,以减少对node.js的请 ...
- 在nginx里面部署node.js本地服务器
我一个前端,为啥要搞服务器呢?因为公司就招了一个后端啊,后端忙不过来,就叫我这个萌新前端去搞后端的东西,我太难了. 直接进入正题吧,因为公司需求,要我在nginx服务器上面搭一个node.js服务器, ...
- javaScript 和 node.js 的一些文章收集
这里收集了一些文章的链接,方便自己查询翻看,也避免把别人的成果复制过来再发布,节约时间. ThinkJS 3 正式版发布 我来回答饿了么大前端的问题(1) 一起理解 Virtual DOM 探讨Nod ...
- 用Nginx反向代理Node.js
安装pm2 npm install pm2 -g ln -s /home/download/node-v8.11.1-linux-x64/lib/node_modules/pm2/bin/pm2 /u ...
随机推荐
- (三十三)Xcode项目的重要工程文件
1.Supporting files内有一个Xxx-Info.plist文件(旧版本Xcode的配置文件叫Info.plist).因此自定义的plist不要带Info关键词. 这个plist是系统的全 ...
- 服务端技术进阶(六)Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?
服务端技术进阶(六)Ant和Maven的作用是什么?两者之间功能.特点有哪些区别? Ant和Maven都是基于Java的构建(build)工具.理论上来说,有些类似于(Unix)C中的make ,但没 ...
- 某公司基于FineBI数据决策平台的试运行分析报告
一.数据平台的软硬件环境 二.组织机构和权限体系 组织机构:平台中已集成一套组织机构,可以建立部门.人员.也可以与现有系统的组织机构集成,将组织机构导入到平台中. 功能权限:通过配置功能点URL的方式 ...
- Android开发你不知道的TIPS
1.Space space是Android 4.0中新增的一个控件,它实际上可以用来分隔不同的控件,其中形成一个空白的区域.这是一个轻量级的视图组件,它可以跳过Draw,对于需要占位符的任何场景来说都 ...
- 单向循环链表C语言实现
我们都知道,单向链表最后指向为NULL,也就是为空,那单向循环链表就是不指向为NULL了,指向头节点,所以下面这个程序运行结果就是,你将会看到遍历链表的时候就是一个死循环,因为它不指向为NULL,也是 ...
- 标准会话对象——StandardSession
Tomcat使用了一个StandardSession对象用来表示标准的会话结构,用来封装需要存储的状态信息.标准会话对象StandardSession实现了Session.Serializable.H ...
- Android性能优化典例(二)
1.使用 Maven 依赖方案代替使用导入jar包方案 如果项目中需要用到第三方jar包,常用的做法是去网上下载后然后放入libs文件夹,再添加到项目依赖,不过,在Android Studio已经不推 ...
- Oracle E-Business Suite Maintenance Guide Release 12.2(Patching Utilities)
更多内容参考: http://docs.oracle.com/cd/E51111_01/current/acrobat/122ebsmt.zip Oracle Patch Application As ...
- mybatis源码之StatementHandler
/** * @author Clinton Begin */ public interface StatementHandler { Statement prepare(Connection conn ...
- obj-c编程10:Foundation库中类的使用(4)[文件管理,查询当前进程信息]
接上一篇文件管理博文.我们可以用NSPathUtilities.h中包含的NSString函数和分类扩展来以兼容的方式处理路径.下面凡是有系统编程经验的童鞋都知道是啥意思了: #import < ...