栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

node.js MySQL性能

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

node.js MySQL性能

首先,您没有完成server.js代码。与数据库打开的连接过多存在一个错误。为了解决这个问题,我使用了connectionPool。其次,Apache使用工作程序来并行运行同一脚本的许多副本。

现在将Apache + PHP + MySQL(XAMP)的结果作为参考点:

Concurrency Level:      100Time taken for tests:   7.476 secondsComplete requests:      1000Failed requests:        0Total transferred:      230000 bytesHTML transferred:       42000 bytesRequests per second:    133.77 [#/sec] (mean)Time per request:       747.557 [ms] (mean)Time per request:       7.476 [ms] (mean, across all concurrent requests)Transfer rate:          30.05 [Kbytes/sec] received

现在等于我修复了server.js的机会

var http = require('http');var mysql = require('mysql');var connection = mysql.createPool({    connectionLimit: 10,    host     : 'localhost',    user     : 'test',    password : 'test',    database : 'testDB'});var server = http.createServer(function (req, res) {    connection.query("INSERT INTO Persons (LastName, FirstName, Address, City) VALUES ('Futterkiste', 'Alfreds', 'Obere Str. 57', 'Berlin')", function(err, rows, fields) {        if (!err) console.log('The solution is: ', rows);        else { console.log('Error while performing Query.');        }        res.writeHead(200, {'Content-Type': 'text/plain'});        res.end('Hello World');    });});server.listen(1337, '127.0.0.1');server.on('close', function() {    connection.end();})console.log('Server running at http://127.0.0.1:1337/');

和节点+ MySQL的结果:

Concurrency Level:      100Time taken for tests:   7.289 secondsComplete requests:      1000Failed requests:        0Total transferred:      112000 bytesHTML transferred:       11000 bytesRequests per second:    137.19 [#/sec] (mean)Time per request:       728.899 [ms] (mean)Time per request:       7.289 [ms] (mean, across all concurrent requests)Transfer rate:          15.01 [Kbytes/sec] received

如您所见,结果非常接近。但这是针对11位Apache工作者的一个节点过程。如果将群集添加到方程中会怎样?这是修改后的代码:

var http = require('http');var mysql = require('mysql');var cluster = require('cluster');if (cluster.isMaster) {    cluster.fork();    cluster.fork();    cluster.fork();    cluster.fork();} else {    var connection = mysql.createPool({        connectionLimit: 10,        host     : 'localhost',        user     : 'test',        password : 'test',        database : 'testDB'    });    var server = http.createServer(function (req, res) {        connection.query("INSERT INTO Persons (LastName, FirstName, Address, City) VALUES ('Futterkiste', 'Alfreds', 'Obere Str. 57', 'Berlin')", function(err, rows, fields) { if (!err)     console.log('The solution is: ', rows); else {     console.log('Error while performing Query.'); } res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World');        });    });    server.listen(1337, '127.0.0.1');    server.on('close', function() {        connection.end();    })    console.log('Server running at http://127.0.0.1:1337/ worker:' + cluster.worker.id);}

四节点工作者结果:

Concurrency Level:      100Time taken for tests:   2.782 secondsComplete requests:      1000Failed requests:        0Total transferred:      112000 bytesHTML transferred:       11000 bytesRequests per second:    359.48 [#/sec] (mean)Time per request:       278.179 [ms] (mean)Time per request:       2.782 [ms] (mean, across all concurrent requests)Transfer rate:          39.32 [Kbytes/sec] received

出于好奇,我添加了10个工作节点的结果:

Concurrency Level:      100Time taken for tests:   2.647 secondsComplete requests:      1000Failed requests:        0Total transferred:      112000 bytesHTML transferred:       11000 bytesRequests per second:    377.84 [#/sec] (mean)Time per request:       264.665 [ms] (mean)Time per request:       2.647 [ms] (mean, across all concurrent requests)Transfer rate:          41.33 [Kbytes/sec] received

我的笔记本电脑是Core2Duo T6600,Ubuntu 14.04.3,php 5.5.9,节点0.10.37,mysql 5.5.44



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448594.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号