百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

PHP运行时性能基准测试

off999 2025-01-07 14:56 25 浏览 0 评论

测试环境

  • 每个运行时在1或2个Docker容器中运行
  • 每个容器有1个CPU和1GB RAM
  • 负载测试工具位于同一Docker网络中

测试应用程序

Symfony提供了运行时组件。根据官方文档,它“从任何全局状态中提取引导逻辑,以确保应用程序可以在运行时运行,如”。这意味着,您可以使用任何您喜欢的运行时来开发应用程序,但在生产中运行最高性能。因此,我们不仅可以使用传统的服务器运行应用程序,还可以使用Swoole,AMPHP和ReactPHP等库。展望未来,最后两人被排除在竞争之外。

负载测试工具

K6用于运行负载测试。每个运行时运行3次,30秒内有10、100和1000个并发连接。

运行时

  • Apache(prefork模式)+ mod_php
  • Apache(事件模式)+ PHP-FPM
  • Nginx + PHP-FPM
  • Nginx Unit应用服务器
  • Nginx Unit应用服务器
  • Nginx + Roadrunner(fcgi模式)
  • FrankenPHP
  • FrankenPHP(worker模式)
  • Swoole

所有运行时都基于官方Docker镜像。如果不使用镜像,则在构建过程中将应用程序的代码复制到镜像中。PHP 8.3无处不在,除了Nginx Unit。2024年初,Nginx Unit支持的最高PHP版本为8.2。

不幸的是,我没有找到与Symfony 7兼容的最新版本的ReactPHP和AMPHP运行时。PHPPM GitHub和Dockerhub看起来都被抛弃了。

应用以下PHP和Symfony设置:

  • 使用php.ini-production(附带官方Docker容器)
  • 已启用Opcache
  • 启用JIT
  • 根据Symfony最佳实践配置preload
  • Composer自动加载器已优化
  • Symfony在生产模式下运行
  • 服务容器转储到单个文件
  • Symfony缓存在容器构建期间预热

应用程序代码以及容器配置可以在GitHub https://github.com/DimDev/php-runtimes-benchmark上找到。

结果

  • 001_Apache+mod_php和002_Apache + PHP-FPM显示了几乎相同的结果。
  • 003_Nginx+PHP-FPM在工作负载较低(并发10和100)时非常接近001_Apache+mod_php和002_Apache + PHP-FPM。
  • 003_Nginx+PHP-FPM在并发量为1000时,能够服务的请求数是Apache堆栈的2倍
  • 004_Nginx单元。首先-哇!!它比传统和最流行的003_Nginx+PHP-FPM快3倍
  • 我不认为005_Roadrunner和006_Nginx+Roadrunner之间有很大的区别
  • 尽管如此,基于Roadrunner的堆栈比003_Nginx+PHP-FPM快2倍以上
  • 007_FrankenPHP(非工作模式)从性能角度来看非常接近003_Nginx+PHP-FPM
  • 008_FrankenPHP(worker mode). Double WOW!我不相信从第一次尝试和运行负载测试3或4倍。因此,当发送1000个并发请求时,FrankenPHP(工人模式)比Nginx+PHP-FPM快10倍。同时,也面临着一个问题。无法用php-ini. production启动容器。
  • 009_swoole -也是双重WOW!.几乎与008_FrankenPHP(wm)相同的速度。非常快。但是,请记住,您的代码应该调整为与Swoole一起运行。对于Symfony,我们有一个bundle,它扩展了symfony/runtime组件。

相关推荐

怎么查询家里wifi密码(怎么查询家里wifi密码是多少)

一、通过已连接wifi的电脑查看1、找到电脑右下角的无线网图标,就是类似信号的图标,点开;2、然后右键自己的wifi名称,选择“属性”;3、进去之后勾选“显示字符”,然后就可以看见密码框的密码以数字显...

分区工具diskgenius怎么合并分区

DiskGenius是一款功能全面的磁盘管理工具,其可以帮助我们进行磁盘分区管理,包括创建新分区、删除分区、扩展分区等。如果您想要合并分区到C盘,可以按照以下步骤进行操作:1.打开DiskGeniu...

windows10易升怎么用(微软windows10易升使用教程)

windows10易升是微软官方的。windows10易升是微软官方发布的升级助理或者叫升级助手(官方下载),帮助你升级到win10最新版本,同时也帮助Win7Win8.1用户升级到Windows1...

300兆光纤买什么路由器(300兆光纤买3000m的路由器有用吗)

对于300Mbps的网速,推荐选择支持AC750及以上的路由器型号。比如TP-LinkArcherC20、D-LinkDIR-816、NetgearR6020等,都是性价比不错的选择。此类路由...

windows10产品密钥查询(查看windows10产品密钥)

要查看电脑上Windows10的产品密钥,你可以按照以下步骤进行操作:打开“开始”菜单,然后点击“设置”图标(齿轮状图标)。在“设置”窗口中,点击“更新和安全”选项。在左侧导航栏中,选择“激活”选项...

电脑怎样设置密码和更改密码
  • 电脑怎样设置密码和更改密码
  • 电脑怎样设置密码和更改密码
  • 电脑怎样设置密码和更改密码
  • 电脑怎样设置密码和更改密码
电脑总死机卡住不动怎么办(电脑老是死机卡住)

如果你的电脑经常卡死,而且只能强制关机,别忘了说明电脑这个配置不够造成的,你需要提高一下它的配置,比如说加一个内存条或者换一个固态硬盘,这样才能够正常运行,不然的话这种电脑是没有办法使用的,现在电脑都...

win10自动修复死循环无法开机

答:1、请确保电脑有充足的电源供应,确保电源可以正常供电;2、检查U盘是否正常安装;3、检查是否有新的软硬件设备接入;4、运行chkdsk,检查硬盘并修复文件系统;5、检查Windows更新,如果存在...

查看台式电脑ip地址(查询台式电脑ip地址)
查看台式电脑ip地址(查询台式电脑ip地址)

如何查看主机名和IP地址:右击我的电脑-属性-网络标识(win2000)/计算机名(winxp)-完整的计算机名称后面的就是你的主机名.右击网上邻居-,属性-右击本地连接-属性-双击INTERNET协议(tcp/ip)就可以看到自己的I...

2025-12-15 19:03 off999

windows7 ultimate(windows7ultimate无法启动)

32位的。1、在下载操作系统镜像的时候,带有x86标识的一般是32位系统,指的是CPU地址总线是32位、fetch、decode解压指令时也按32位字长来进行。x64一般表示系统为64位。2、x86是...

雨林系统u盘安装步骤(雨林重装系统)

如果是ISO镜像那就刻盘安装,如果不想刻盘,就硬盘安装。问题又来了,大部分的都是GHOST的系统,还有就是纯安装版的。我只说一下GHOST的,先把ISO文件给解压了,然后里边会有占主要空间大小的.GH...

0xc000021a手动修复(修复0xc0000225)
0xc000021a手动修复(修复0xc0000225)

出现这样的问题很常见,用以下方法及解决方案就可以解决1、错误代码0xc000021a表示用户模式子系统有所损坏。一般按照蓝屏提示重启系统,即可正常运行。2、如果重启没能解决,则建议通过“最后一次正确的配置”方式启动系统。3、如果系统文件被破...

2025-12-15 17:51 off999

windows7网络驱动(win7网络驱动在哪个文件夹)
windows7网络驱动(win7网络驱动在哪个文件夹)

1.Networkcarddriver。2.右键我的电脑,点击“属性”,选择左侧“设备管理器”3.点击“网络适配器”,如果方框内没有驱动,请下载驱动精灵安装网卡驱动。在Windows7操作系统中,网络驱动程序的名称通常以网络适配器的品...

2025-12-15 17:03 off999

diskgenius的功能介绍(diskgenius是什么)

先打开DiskGenius(如果系统打不开了,可以在PE下运行),在弹出分区工具Diskgenius工具中,依次点击“硬盘——重建主引导记录(MBR)”选项,无需理会弹出的提示窗口,直接按下“是”即可...

网速快但是打开网页慢(网速快但是打开网页慢怎么回事)

原因有很多,有可能是路由器的原因,也有可能是其他原因,总的来说,网速慢的常见原因有以下几种:1.wifi被人蹭网,别人占用了带宽或者给你限速了,可以登录路由器管理页面查看连接的设备数。2.路由器性能...

取消回复欢迎 发表评论: