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截图 untitled1.png

apache截图 untitled2.png


7 回复

同一环境中测试两个服务器的运行速度,用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截图 untitled1.png

apache截图 untitled2.png


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 在处理静态页面时表现出了更高的效率。这主要归因于以下几点:

  1. 非阻塞 I/O: Node.js 采用事件驱动、非阻塞 I/O 机制,使得它可以高效地处理并发请求。
  2. 轻量级: Node.js 是一个轻量级的服务器,启动速度快,占用资源少。
  3. 单线程模型: 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 相比差距都很大。

发扬中国人的传统智慧,来个田忌赛马 out.jpg

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。

原因分析

  1. 并发模型

    • Node.js 使用事件驱动、非阻塞 I/O 模型,非常适合处理高并发请求。
    • Apache 默认使用多进程或多线程模型,在处理大量并发连接时可能不如 Node.js 高效。
  2. 代码优化

    • Node.js 的性能很大程度上取决于你的代码质量和是否使用了合适的库。
    • Apache 的性能则依赖于 PHP 代码的质量以及配置参数。
  3. 测试条件

    • 你的测试条件(如请求类型、负载均衡等)可能会对结果产生影响。
    • 例如,如果测试中包含大量的 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 可能更有优势。

建议根据实际应用场景进行详细测试和调优。

回到顶部