早就听说V8的威力了,由于一直在用tornado做项目,今天特意拿tornado和node.js来做个简单的对比压力测试。结果是node.js胜出。
硬件: 普通pc机 双核 内存2g
OS: ubuntu 10.04
先说一下node.js的安装:
wget -c http://nodejs.org/dist/node-v0.3.1.tar.gz
# ./configure
# make
# make install
如果需要ssl, 则先apt-get install libssl-dev
启动基于node.js的web server
脚本web.js如下:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello bobning\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');
# node web.js
Server running at http://127.0.0.1:8124/
启动基于tornado的web server
tornado就更简单了,在demos下有个helloworld项目,默认端口为8888
# ./helloworld.py --logging=error #注意把log关闭,否则影响测试结果
测试开始:
# ab -c10 -n1000 http://127.0.0.1:8124/ #node.js
Concurrency Level: 10
Time taken for tests: 0.208 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 76000 bytes
HTML transferred: 12000 bytes
Requests per second: 4796.92 [#/sec] (mean)
Time per request: 2.085 [ms] (mean)
Time per request: 0.208 [ms] (mean, across all concurrent requests)
Transfer rate: 356.02 [Kbytes/sec] received
# ab -c10 -n1000 http://127.0.0.1:8888/ #tornado
Concurrency Level: 10
Time taken for tests: 0.509 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 168000 bytes
HTML transferred: 12000 bytes
Requests per second: 1963.95 [#/sec] (mean)
Time per request: 5.092 [ms] (mean)
Time per request: 0.509 [ms] (mean, across all concurrent requests)
Transfer rate: 322.21 [Kbytes/sec] received
猛一点:
# ab -c1000 -n20000 http://127.0.0.1:8124/ #node.js
Concurrency Level: 1000
Time taken for tests: 2.629 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Total transferred: 1520000 bytes
HTML transferred: 240000 bytes
Requests per second: 7606.23 [#/sec] (mean)
Time per request: 131.471 [ms] (mean)
Time per request: 0.131 [ms] (mean, across all concurrent requests)
Transfer rate: 564.52 [Kbytes/sec] received
# ab -c1000 -n20000 http://127.0.0.1:8888/ #tornado
Concurrency Level: 1000
Time taken for tests: 10.605 seconds
Complete requests: 20000
Failed requests: 0
Write errors: 0
Total transferred: 3360000 bytes
HTML transferred: 240000 bytes
Requests per second: 1885.98 [#/sec] (mean)
Time per request: 530.228 [ms] (mean)
Time per request: 0.530 [ms] (mean, across all concurrent requests)
Transfer rate: 309.42 [Kbytes/sec] received
分享到:
相关推荐
SockJS系列:SockJS客户端JavaScript客户端库SockJS节点Node.js服务器SockJS erlang Erlang服务器SockJS-tornado Python / Tornado服务器vert.x Java / vert.x服务器正在进行中:SockJS-ruby SockJS-netty SockJS...
Node.js的出现填补了JavaScript在服务器端编程的空白,构建了一个全异步的生态系统。 在大多数Web应用中,I/O操作(如磁盘读写、网络通信、数据库交互)往往是性能瓶颈。传统解决方案如PHP采用多进程模型,每个进程...
基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,适合用作毕业设计、课程设计作业等,项目均经过测试,可快速部署运行! 基于node.js、vue、mongodb等技术构建的web系统,界面美观,功能齐全,...
为了评估 Node.js 的性能,这里提供了一组基准测试结果,将其与 nginx、Thin 和 Tornado 等其他流行的服务端框架进行比较。测试环境为 Linux,使用 Intel Core 2 Duo 2.53GHz 处理器和 4GB 内存。 - **标准的...
[截屏] 技术[REST API]我们有两个API可供使用-放在Node.js和Tornado上-Python。 下载链接如下:) [Expo CLI]用于构建React Native应用程序的界面,我曾用来构建IOS和Web应用程序。 其他: [邮递员]-测试$ git clone...
Node.JS 中完成的,这不太符合我们的需求。 在 Ruby Rack 和 Go 中也有实现,但我们出于与 Node.JS 类似的原因拒绝了这些实现。 这个版本是为了让快乐而设计的。 实现 SocketTornad.IO 作为用户,您唯一的主要要求是...
libuv是一个跨平台的异步I/O库,最初为Node.js设计,但现在也支持多种语言,包括Python。uvloop将libuv与Python的asyncio结合,通过C语言实现,极大地提高了事件循环的运行速度,使得Python的异步应用性能得到显著...
安装 node.js 安装 Python(2.7 及更高版本) 设置前端 进入/helloworld/client/目录 运行npm install来安装 npm pacakges。 运行gulp 。 这将监视文件更改自动重建前端以进行开发。 要部署到生产环境,请运行...
SockJS-node Node.js server SockJS-erlang Erlang server SockJS-tornado Python/Tornado server SockJS-twisted Python/Twisted server vert.x Java/vert.x server Work in progress: SockJS-ruby...
Kotlin can be used to create Node.js applications, as the JavaScript code that runs with Node.js can be generated from it. This chapter shows how to do so by creating a simple chat application. ...
luvit 跟 node.js 类似, 但性能是 node 的 2 到 4 倍。 luvit = luajit2 libuv node 已经脱离了刀耕火种的年代,luvit 还是水深火热中 Q^Q Catke for luvit 是一个简单的 web 框架,让你写 luvit 的时候,不用...
Python在3.4引入了 asyncio 库,3.6新增了关键字 async和await,此后,异步框架迅速发展了起来,性能上能和Node.js比肩,除非是CPU密集型任务,否则没有理由不适用异步框架。 如果你是Web开发者,现在异步Web框架上...
后端可能采用了Node.js(Express、Koa等框架)、Python(Django、Flask等)或者其他后端语言,负责处理业务逻辑、数据存储和接口设计。 6. **数据分析**:数据分析部分可能使用了如Pandas、NumPy、Matplotlib等...
与Python后台开发经理类似,Node.js后台开发经理同样关注技术评审、架构设计和团队管理。他们需要熟悉Node.js开发,有MySQL、Redis或MongoDB等数据库使用经验。公司的吸引力在于全球项目、高薪资、高福利、国际团队...
优秀教程( )的启发,用revealJS创建多用户演示 教程中使用的堆栈是只有 Javascript(Yeoman、Grunt 和 Node.js),所以在我学习 Python 时,我想尝试使用 Python 后端来调整应用程序。 我使用了 tornado(因为它...
Build a Node.js Project from Scratch.epub Build your applications with Webpack.epub Build Your Own Lisp 中文版.epub C 语言进阶.epub Ceph 运维手册.epub Chromium中文文档.epub Databricks Spark 知识库....
3. **服务器架构**:Web聊天室需要处理大量并发连接,因此服务器架构通常是基于事件驱动或者异步非阻塞的,如Node.js的Event Loop,Python的Tornado框架等。 二、关键技术 1. **前端技术**:前端界面通常使用HTML...
node-express:一个 node.js express 应用程序 redis-test : 一个 redis 键/值服务器 python-tornado : Python 龙卷风网络服务器 每次运行都会runtest.bash设置内核ftrace工具、运行容器、打开相关pids 的跟踪、提供...
1. **服务器端**:通常使用Node.js、Python的Tornado库或者Java的Jetty等实现,监听WebSocket连接,并处理来自多个客户端的消息。 2. **客户端**:在HTML5中使用WebSocket API来创建连接、发送和接收消息。浏览器的...