V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
f1ynnv2
V2EX  ›  PHP

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

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

    原来在树莓派上部署的 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
       332 天前
    一年后回来补充一下,之前是在 macOS 上用的 docker desktop ,后来才发现这东西不仅经常出问题,性能也很渣。换了 orbstack 后基本没出啥问题了,而且性能也提升明显。orbstack 下的 php 性能至少和树莓派的差不多了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2588 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:32 · PVG 13:32 · LAX 21:32 · JFK 00:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.