上篇文章我提到用taskset绑定多核cpu来运行node.js可以提高其稳定性和性能,我们拿数据说话,今天花了一天时间用来做压力测试,结果虽然仅供参考,但是也能说明一些问题。 声明:此次性能测试数据绝对真实,结果仅供参考。 网络环境:内网 压力测试服务器: 服务器系统:Linux 2.6.18 服务器配置:Intel(R) Xeon(TM) CPU 3.40GHz 4 CPUS 内存:6GB 发包服务器: 发包工具:apache 2.2.19自带的ab测试工具 服务器系统:Linux 2.6.18 服务器配置:Pentium(R) Dual-Core CPU E5800 @ 3.20GHz 2CPUS 内存:1GB 第一轮测试:空框架测试 服务端node.js代码: var http=require('http'); var server = http.createServer(function(request, response) { response.writeHead(200, {'Content-Type':'text/plain'}); response.end('Hello World\n'); }) server.listen(8880); //注:这里会根据情况设置8880-8883 这4个端口 console.log('Server running at http://10.1.10.150:8880/'); 灰常简单的代码,返回”hello world”,也是官方示例代码。 我们先测node.js空框架裸奔性能,具体业务的性能要接下来会进行测试。 Nginx端代码: upstream node_server_pool { server 10.1.10.150:8880 ; server 10.1.10.150:8881 ; server 10.1.10.150:8882 ; server 10.1.10.150:8883 ; } server { listen 8888; server_name 10.1.10.150; location / { proxy_pass http://node_server_pool; } } 第一种测试:在服务端只开一个node.js服务,端口为8880,直接通过ab对8880端口进行压力测试。
回复 (8)
同意, node.js 最风騒的地方就是非阻塞异步响应哪! 建议,再加个测试四: - 对 redis 和 dbd/sqlite 纯内存DB 和 纯文件DB 访问 的压力测试
Nodejs跟netty不知道如何~
我很惊讶NodeJS的性能, 以前测试Apache/nginx的性能都是以{万请求/秒}为单位的, 这里竟然普遍只有2000多 即使是tomcat/jetty这种应用服务器, 也能达到1w+的rps吧
感谢suqian大师的关注!泪流满面啊~不胜荣幸啊! node.js的优势确实是在非阻塞上,CPU-bound测不出好成绩。 我们公司现在用node.js去跑异步脚本,就是对数据从memcache分析转存mysql。 不过本文旨在说明用nginx+node.js可以提升性能和稳定性,不在考察node.js的压测性能。下周正好手头有几台服务器,这两天配置好connection pool,准备和PHP进行一次mysql、redis和memcache的性能对比,希望大师继续关注啊。 其实在写本文时我也对multi-node和spark进行了压力测试,“hello world”裸奔在5000client时qps 4000+,但是请求响应时间不如nginx,所以如果单服务器的话,我们实际生产还是会选择nginx+node.js,毕竟nginx有更丰富和高效的转发策略。
第二轮测试的场景是cpu密集型,不适合nodejs。 建议加上第三种测试,测试网络IO或者磁盘IO等
貌似Markdown语法裸奔了????页面内容看起来费劲啊!
楼主这种测试没啥意思,NodeJS的强项是IO异步来完成高并发响应的
nodejs就是个消息处理器, 所有的操作都是操作系统完成的,想计算,还不如让nodejs调用一段shell脚本。