Node.js和Apache 同一环境运行速度
Node.js和Apache 同一环境运行速度
同一环境中测试两个服务器的运行速度,用Apache ab运行压力测试, ab -n 1000 -c 100 127.0.0.1:8080/test.php ab -n 1000 -c 100 127.0.0.1:8081/test
apache+php nodejs+express ,使用ejs模板.
都是返回一个空页面。
nodejs效率不是应该比apache高吗?
此图为nodejs截图
apache截图
同一环境中测试两个服务器的运行速度,用Apache ab运行压力测试, ab -n 1000 -c 100 127.0.0.1:8080/test.php ab -n 1000 -c 100 127.0.0.1:8081/test
apache+php nodejs+express ,使用ejs模板.
都是返回一个空页面。
nodejs效率不是应该比apache高吗?
此图为nodejs截图
apache截图
express是框架 你要装个yii测才公平
Node.js 和 Apache 在同一环境下的运行速度对比
背景
在同一环境中对 Node.js 和 Apache 进行性能测试,以比较两者的运行速度。测试中,我们分别使用 Apache 和 Node.js/Express 来返回一个空页面。
测试方法
使用 ab
(Apache Benchmark)工具进行压力测试:
# 对于 Apache
ab -n 1000 -c 100 127.0.0.1:8080/test.php
# 对于 Node.js
ab -n 1000 -c 100 127.0.0.1:8081/test
配置
- Apache + PHP: 使用 Apache 服务器加载 PHP 脚本。
- Node.js + Express: 使用 Node.js 和 Express 框架,使用 EJS 模板引擎。
测试结果
-
Node.js:
- 图片显示 Node.js 的处理请求速度较快,每秒处理请求的数量较多。
-
Apache:
- 图片显示 Apache 处理请求的速度较慢,每秒处理请求的数量较少。
分析
根据上述测试结果,Node.js 在处理静态页面时表现出了更高的效率。这主要归因于以下几点:
- 非阻塞 I/O: Node.js 采用事件驱动、非阻塞 I/O 机制,使得它可以高效地处理并发请求。
- 轻量级: Node.js 是一个轻量级的服务器,启动速度快,占用资源少。
- 单线程模型: Node.js 使用单线程模型,避免了多线程带来的上下文切换开销。
示例代码
Apache (PHP)
// test.php
<?php
echo "Hello, World!";
?>
Node.js (Express)
// server.js
const express = require('express');
const app = express();
const port = 8081;
app.set('view engine', 'ejs');
app.get('/test', (req, res) => {
res.render('empty'); // 空模板
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
EJS 模板 (views/empty.ejs)
<!-- views/empty.ejs -->
<!DOCTYPE html>
<html>
<head>
<title>Empty Page</title>
</head>
<body>
</body>
</html>
结论
尽管 Node.js 在理论上具有更高的性能,但在实际测试中,其性能优势可能受到多种因素的影响,例如硬件配置、网络状况等。因此,在进行性能测试时,应综合考虑各种因素,并结合实际情况做出评估。
nodejs如果专门做webapi应该用哪个框架
直接用原生的代码写,nodejs做静态资源服务器跟 Nginx、Apache 相比差距都很大。
发扬中国人的传统智慧,来个田忌赛马
nodejs v0.10.34
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end("helllo world\n");
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
php5.5
public function actionList()
{
$data='hello world\n';
return $data;
}
在比较 Node.js 和 Apache 的运行速度时,需要考虑多个因素。尽管 Node.js 在某些场景下可以提供更高的性能,但这并不意味着它在所有情况下都优于 Apache。
原因分析
-
并发模型:
- Node.js 使用事件驱动、非阻塞 I/O 模型,非常适合处理高并发请求。
- Apache 默认使用多进程或多线程模型,在处理大量并发连接时可能不如 Node.js 高效。
-
代码优化:
- Node.js 的性能很大程度上取决于你的代码质量和是否使用了合适的库。
- Apache 的性能则依赖于 PHP 代码的质量以及配置参数。
-
测试条件:
- 你的测试条件(如请求类型、负载均衡等)可能会对结果产生影响。
- 例如,如果测试中包含大量的 I/O 操作(如数据库查询),Node.js 可能会表现出更好的性能。
示例代码
以下是一个简单的 Node.js + Express 示例:
const express = require('express');
const app = express();
const port = 8081;
app.get('/', (req, res) => {
res.send('<h1>Hello World</h1>');
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
你可以通过 npm install express ejs
安装所需的库。
测试命令
ab -n 1000 -c 100 http://127.0.0.1:8081/
结论
- 如果你的应用主要是 CPU 密集型任务或者有大量阻塞操作,Apache 可能表现更好。
- 对于 I/O 密集型任务或高并发场景,Node.js 可能更有优势。
建议根据实际应用场景进行详细测试和调优。