PHP 与 Node.js:实际性能对比

客观的

我正在评估开发 REST API 时, PHP和Node.js哪个更合适。近年来,业界在开发 REST API 方面明显倾向于使用 Node.js,而 PHP 则很少被提及------尽管许多 CMS 平台和 Web 应用程序仍然依赖于 PHP。

在选择合适的服务器端脚本技术之前,我想检查一下每种技术处理 HTTP 请求的效率如何。

因此,我决定测试它们在实际负载下的性能。

目标是了解传统 PHP(使用 www.lglngy.com Apache)、现代 Laravel Octane和Node.js(使用 NestJS)在并发流量下的表现。

但在深入探讨结果之前,我们先来了解一下它们各自是如何处理请求的。

PHP(搭配 Apache HTTP 服务器)

传统的 PHP 采用请求-进程模型运行。

每个 HTTP 请求都会在 Apache 的mod_php模块下生成一个新的 PHP 进程或线程。

执行完毕后,进程结束------这意味着每次请求都会重新初始化整个运行时环境和应用程序状态。

Laravel Octane(含 RoadRunner)

Laravel Octane 引入了一个持久化应用程序服务器,使 Laravel 应用程序在请求之间保持在内存中。

它使用 * RoadRunner *(或 Swoole)作为服务器,大幅降低了每次请求的启动成本。

Node.js(NestJS框架)

Node.js 使用事件驱动的非阻塞I/O 模型。

它运行在单线程上,但使用事件循环来高效地处理数千个并发连接,而​​无需为每个请求创建一个新进程。

测试设置

API接口:获取用户数据(10条记录)

并发用户数: 50(虚拟用户)

持续时间: 10秒

负载测试工具: k6(Grafana)

测试结果

框架/技术栈 请求数 平均持续时间(毫秒) P95(毫秒) P99(毫秒) 平均RPS 最大RPS

PHP + Apache 107 6096.39 15197.79 15548.40 6.68 8.0

Laravel Octane(RoadRunner) 2311 217.91 288.76 729.08 231.1 247.67

NestJS(Node.js) 5237 95.67 130.04 402.85 585.33 247.67

简而言之------如果你的目标是性能和可扩展性,Node.js(NestJS)是最佳选择。

相关推荐
艾斯比的日常22 分钟前
Java 三色标记算法:并发垃圾回收的核心技术解析
java·开发语言·算法
M***Z21032 分钟前
如何在Windows系统上安装和配置Node.js及Node版本管理器(nvm)
windows·node.js
T***u33336 分钟前
JavaScript在Node.js中的流处理大
开发语言·javascript·node.js
未来之窗软件服务1 小时前
幽冥大陆(三十四)VUE +node智慧农业电子秤读取——东方仙盟炼气期
开发语言·vue·电子秤·东方仙盟·东方仙盟sdk
踢球的打工仔1 小时前
PHP面向对象(5)
android·java·php
t***82111 小时前
华为数据中心CE系列交换机级联M-LAG配置示例
服务器·华为·php
CoderYanger1 小时前
优选算法-字符串:63.二进制求和
java·开发语言·算法·leetcode·职场和发展·1024程序员节
3***31211 小时前
java进阶1——JVM
java·开发语言·jvm
charlie1145141912 小时前
深入理解C/C++的编译链接技术6——A2:动态库设计基础之ABI设计接口
c语言·开发语言·c++·学习·动态库·函数
Cx330❀2 小时前
C++ STL set 完全指南:从基础用法到实战技巧
开发语言·数据结构·c++·算法·leetcode·面试