Category Archives: node.js
[转发] nodejs下mysql性能测试
nodejs下mysql性能测试
作者:qingdu
原文:http://cnodejs.org/blog/?p=404
近期对node下的几个mysql操作库做了一下简单的调研
主要是针对这3个module进行
libmysqlclient,mysql-native, mysql
node-libmysqlclient
https://github.com/Sannis/node-mysql-libmysqlclient
基于libmysql的封装, 支持阻塞与非阻塞两种操作方式,目前在query部分功能比较完善,prepare statement方面还是有些bug,实际测试中一直出core
安装
npm install mysql-libmysqlclient
node-mysql
https://github.com/felixge/node-mysql
纯node的实现, 支持prepare statement, 数据的获取支持事件与callback两种方式
安装
npm install mysql
node-mysql-native
https://github.com/sidorares/nodejs-mysql-native
纯node的实现, 内置有简单的连接池支持,支持prepare statement, 数据的获取只支持通过事件方式
安装
npm install mysql-native
测试设计
测试表结构
CREATE TABLE `test10` (
`id` int(10) unsigned NOT NULL DEFAULT '0',
`txt` varchar(500) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
测试数据
分别生成了含10, 100, 500, 1500行记录的4张表
使用10个并发连接分别对其进行SELECT * FROM table的查询
测试结论
其中数值表示qps值
在结果集较小时node-mysql-native明显胜出
当结果集增大到接近100行时,node-libmysqlclient开始表现出更佳的性能
node-mysql性能与其他两个module差距比较大,如果对性能有一定要求的话,则其基本不可用
测试代码
http://code.google.com/p/cnodejs/source/browse/#svn%2Ftrunk%2Fmysql-benchmark
centos安装node.js简单测试
操作系统
Centos 5.4 Linux 2.6.18-164.el5 4G内存、Xeon(TM) CPU 3.20GHz
node的官方网站http://nodejs.org/ 使用官方网站示例。
再安装前请将开发工具(tcl-devel、openssl-devel、glibc-devel、 bzip2*等)安装,可以使用yum工具。
安装
# tar zxvf node-v0.5.7.tar.gz
# cd node-v0.5.7
# ./configure
# make
有报make: [all] Error 1 (ignored) 但是没有找到问题,忽略了直接做下一步。
# make install
收到安装成功讯息。
建立一个node.js档案。
vim node.js
http.createServer(function (req, res) {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Hello Node.jsn‘);
}).listen(8124, “192.168.1.200”);
console.log(‘Server running at http://192.168.1.200:8124/’);
执行node.js
# node node.js
打开浏览器使用连接http:// 192.168.1.200:8124看到Hello Node.js,就表示node.js已经正在运作中。
进行个简单测试,使用apache的ab工具
命令# ./ab -c10000 -n 40000 http:// 192.168.1.200:8124/
并发数: 3498.75 [#/sec]
平均返回相应时间: 0.286 [ms]
传输量: 266.51 [Kbytes/sec]
无请求失败。
在同一台机器上使用django写个,测试一下。
环境Python 2.6.6 django 1.3.0 关闭debug状态
代码为:
#!/bin/evn python
from django.http import HttpResponse
def index(request):
html = “Hello Djangon”
return HttpResponse(html)
直接使用python自带的调试服务器
# python manage.py runserver 192.168.1.200:9000
因为40000和30000时将服务器跑死了(报错apr_socket_recv: Connection timed out (110)),所以修改为25000进行测试,结果也死了,改20000也死了,直接改15000也死了。算了我不测了。
总结:初步看node js效率确实很高,python+django自带的服务器的效