PHP 有哪些提高性能的扩展? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
f1ynnv2
V2EX    PHP

PHP 有哪些提高性能的扩展?

  •  
  •   f1ynnv2 2023-01-28 11:54:40 +08:00 3372 次点击
    这是一个创建于 987 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原来在树莓派上部署的 nginx+php 跑 dokuwiki ,反应迅速,后来在一台 x86 上用 docker 重新打包了 php ,发现 php 性能下降很严重。

    搜索了一下发现 docker 的 php 默认是没开 Opcache 的,打开之后 docker php 的性能确实有明显改善,但是仍然达不到树莓派上 php 的迅速。

    所以想问一下除了 Opcache 之外还有其它提升 php 性能的扩展吗?

    13 条回复    2024-01-30 22:45:22 +08:00
    dilu
        1
    dilu  
       2023-01-28 11:58:36 +08:00   2
    Opcache 是缓存了生成中间代码的步骤,所以会快一点

    别的也有很多优化手段,例如用 apcu 组件可以把数据缓存在本地,但是需要代码支持

    还有 sealog ,高性能的打日志的组件

    还有知名的 swoole 等等

    但是很明显,这些都需要程序本身支持

    完全不需要侵入代码的性能扩展,就 Opcache 了

    另外,你树莓派上的 php 速度快,是正常的,因为 docker 本身的 io 上有一定的损耗。并且两个环境的配置参数都不一样,也会影响到一定的性能。
    litguy
        2
    litguy  
       2023-01-28 12:54:18 +08:00
    感觉是 docker 的 io 性能导致的,你可以把程序在物理环境跑个看看
    f1ynnv2
        3
    f1ynnv2  
    OP
       2023-01-28 15:16:41 +08:00
    @dilu 谢谢,我搜了一下,有的说官方的 php 镜像可能是因为默认配置的关系,性能不行,都是建议自己定制镜像。我也来试试。 树莓派上 dokuwiki 每个 php 页面的响应都在 100ms 以内,换 docker 之后居然要 900ms, 开了 Opcache 之后也还要 400~600ms 。这差距有点大。
    f1ynnv2
        4
    f1ynnv2  
    OP
       2023-01-28 15:17:34 +08:00
    @litguy 对,挂载的方式 IO 应该也有不小影响。我准备把 dokuwiki 都打包进镜像再比较一下。
    Twnysta
        5
    Twnysta  
       2023-01-28 16:33:55 +08:00
    你应该配置下 php-fpm 的子线程数量
    Twnysta
        6
    Twnysta  
       2023-01-28 16:35:51 +08:00
    docker-compose 应该 fpm 一个 pod ,nginx 一个 pod ,代码一个 pod ,fpm 跟 php 的配置都要手工配置挂载进去
    f1ynnv2
        7
    f1ynnv2  
    OP
       2023-01-28 17:12:31 +08:00
    @Twnysta 现在就是 fpm 、nginx 各一个独立的容器,不过代码作为一个 pod 是啥意思?我现在就是把代码同时挂载到 nginx 和 php-fpm 的容器里。
    试着修改了一下 php-fpm 的线程数据,似乎变化不大。不过也说的通,dokuwiki 也没啥大并发访问,就我一个人用,主要是看单个页面的响应时间。

    另外刚刚试了一下,自己基于 ubuntu18.04 做了一个 php 的镜像,折腾半天最后每个页面响应也是 400~600ms 。 这样看来自己做的 php 镜像,默认参数情况下和官方的也没什么区别,估计得仔细研究下配置看看怎么优化性能。
    dusu
        8
    dusu  
       2023-01-28 21:14:30 +08:00 via iPhone
    程序没必要打进 docker 里
    不要用目录挂载
    挂 volume 性能就会好很多
    neutrino
        9
    neutrino  
       2023-01-29 08:31:16 +08:00 via Android
    x86 上的 docker 和 x86 上的非 docker 比呢
    klgd
        10
    klgd  
       2023-01-29 09:12:50 +08:00
    docker 性能影响这么大吗?
    Twnysta
        11
    Twnysta  
       2023-01-29 10:50:47 +08:00
    @f1ynnv2 就是代码挂 volume ,opcache 你看下把时间戳更新给关了,php 版本能最高最好,8.1+ > 7.4 >7.2
    f1ynnv2
        12
    f1ynnv2  
    OP
       2023-01-29 11:17:01 +08:00
    @dusu 嗯,对现在就是 docker compose 挂的 volume

    @Twnysta 好的,我来试试高版本的 php 。dokuwiki 积累了不少数据一直没升级,只能用 php7.3 以下的,干脆借这机会更新到最新版本。
    f1ynnv2
        13
    f1ynnv2  
    OP
       2024-01-30 22:45:22 +08:00
    一年后回来补充一下,之前是在 macOS 上用的 docker desktop ,后来才发现这东西不仅经常出问题,性能也很渣。换了 orbstack 后基本没出啥问题了,而且性能也提升明显。orbstack 下的 php 性能至少和树莓派的差不多了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2668 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 13:39 PVG 21:39 LAX 06:39 JFK 09:39
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86