各位, PHP 不用 CGI/FPM,而是 Apache 2.0 Handler,怎么提升并发? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
uiosun
V2EX    PHP

各位, PHP 不用 CGI/FPM,而是 Apache 2.0 Handler,怎么提升并发?

  •  
  •   uiosun 2020-07-28 14:35:03 +08:00 4018 次点击
    这是一个创建于 1906 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我司竟然还在用 Apache 2.0 Handler,运维不敢快速切换到 php-fpm,但同意让我改一些 Apache/PHP 的配置。

    项目月底就要上线,性能压力目前主要集中在并发上,所以我该怎么优 Apache 2.0 Handler 呢?

    Ps:

    线上 32G 内存的服务器,觉得蛮大,本来准备直接调整 fpm 的生成方式、最大数量,结果猝不及防……

    查了查“Apache 2.0 Handler 并发”,毫无结果。

    24 条回复    2020-07-29 12:49:45 +08:00
    hbolive
        1
    hbolive  
       2020-07-28 14:45:41 +08:00
    你这不还没上线吗?为啥不让调。。
    NjcyNzMzNDQ3
        2
    NjcyNzMzNDQ3  
       2020-07-28 14:49:05 +08:00
    如果压力在 apache 哪里,没啥好办法,甩锅给运维吧。

    试试在 apche 前面套个 nginx,nginx 来做负载均衡带多个 apache,nginx 也可以开 proxy_cache 减少请求到户端的数量。
    dzdh
        3
    dzdh  
       2020-07-28 14:52:54 +08:00
    啥操作系统
    *nix 把 mpm 改成 event

    fpm 的话 php 可以安装两套,一套跟 apache 一起编译成 mod_php 另一套 php-fpm 。
    apache 支持 fcgi 和 mod_php 共存(其实本来就是两套) 然后前端 nginx 负载均衡一下 apache 权重 9 fpm 权重 1
    cbasil
        4
    cbasil  
       2020-07-28 15:04:29 +08:00
    没上线还不让调,怼死运维去
    mahone3297
        5
    mahone3297  
       2020-07-28 15:11:29 +08:00
    多开几个 apache,前端架一个 lb
    AngryPanda
        6
    AngryPanda  
       2020-07-28 15:12:44 +08:00
    堆机器了
    hasdream
        7
    hasdream  
       2020-07-28 15:13:22 +08:00
    linux 可以考虑把 apache 升到 2.4 然后使用 event 模式, 调优参考: http://mp.weixin.qq.com/s/eGGtBlXy0cYBFTO6AfF7dw
    wangritian
        8
    wangritian  
       2020-07-28 17:25:45 +08:00
    apache 设置成多进程+多线程的工作模式,php 开启 opcache,mysql 热点数据同步到 redis
    你还需要掌握一个压测工具,ab/webbench/wrk,一边优化一边确认结果
    Evilk
        9
    Evilk  
       2020-07-28 17:36:08 +08:00
    还没上线,为啥不让调?
    安装 fpm 很简单啊?
    sunny1688
        10
    sunny1688  
       2020-07-28 17:37:54 +08:00
    为啥是运维管这些?
    bin20060407
        11
    bin20060407  
       2020-07-28 17:55:06 +08:00
    以前用的 php-fpm 配合 Apache 2.4,以为可以撑得住,结果发现不管咋调,还是会报进程数不够,换成 nginx,就没问题了
    jifengg
        12
    jifengg  
       2020-07-28 18:00:32 +08:00
    既然有运维,那么就不要自己改!把你的需求提给运维。自己改了出问题是你的,而且你不也不熟悉么。运维坚持用 apache,那就只能提出需求让其解决了。
    真的,别最后吃力不讨好。
    JJstyle
        13
    JJstyle  
       2020-07-28 18:59:17 +08:00 via iPhone
    可以开多个 apache,前面用 nginx 转发一下
    uiosun
        14
    uiosun  
    OP
       2020-07-29 09:22:13 +08:00
    (运维也是个开发同事,只是他负责我们公司运维工作,公司对这块看得比较重,不允许其他人譬如我,来动容器)

    前阵子带队把 ElementUI fork 到内网,又加了几个组件,领导可能是觉得做的不错,就突然说我来优化性能,我也很懵,但觉得没啥问题,反正我本职就是服务端。

    结果现在运维卡住 Docker,不允许我去搞大动作,我就很炸裂了……

    现在,我正在跟运维商量把一些配置文件暴露给我,让我可以修改和重启容器,如果这都做不到,那我就直接找领导,说“我做不了这个活儿,请另请高明”了。

    艾特各位大佬,嘿嘿。 @sunny1688 @jifengg @cbasil @hbolive @NjcyNzMzNDQ3
    uiosun
        15
    uiosun  
    OP
       2020-07-29 09:22:44 +08:00
    @dzdh CentOS,不能有大动作,只能在小配置上做些手脚……蓝受
    uiosun
        16
    uiosun  
    OP
       2020-07-29 09:24:06 +08:00
    @mahone3297 感谢大佬,负载均衡有的,Apache 我改了配置,提升了 30 % 的线程数量,看效果如何
    uiosun
        17
    uiosun  
    OP
       2020-07-29 09:25:33 +08:00
    @wangritian 跟你讲个笑话,我们作为一个预估上万用户同时做写入业务的站,没用 Redis……(无语泪先流,我来的时候这个站已经基本做完了)
    xw
        18
    xw  
       2020-07-29 09:50:26 +08:00
    写出实施方案,(预计)改前后效果对比,需要时间,反馈 /讨论决定是否 /如何处理
    julyclyde
        19
    julyclyde  
       2020-07-29 10:42:29 +08:00
    @dzdh 我记得 apache mod_php 似乎不支持 event 只能 mpm 啊?
    julyclyde
        20
    julyclyde  
       2020-07-29 10:43:12 +08:00
    @uiosun 预估上万人一般都达不到的,所以 redis 无所谓啦
    sunny1688
        21
    sunny1688  
       2020-07-29 11:26:11 +08:00
    @uiosun 正式环境用 docker ?怎么玩起来的?搞不懂,我只是在开发环境用一下 docker,正式服想不出怎么用,

    正式服安装 docker,mysql,redis,全部用 docker 容器?现在都上云了吧??求大佬解惑!
    uiosun
        22
    uiosun  
    OP
       2020-07-29 12:27:43 +08:00
    @sunny1688 外包公司,用容器不用担心客户服务器的环境问题,其实内部还是没有封装。

    之前在的公司自营产品比较强,可以跟你交流一下:

    将数据库、Redis 、MongoDB 、Nginx 等套件,分别封装,对容器外暴露接口,这样所有的容器,都会被监控 RAM 、CPU 、进程数等指标,如果发现哪些容器有问题,立刻可以定位、重启和解决。

    多容器(算是分布式?我没详细了解过),所以当某个环节的某部分容器宕机,其他容器可以正常执行业务,并不会出现“某个 Redis 容器崩了,整个缓存系统都崩了”的情况。
    uiosun
        23
    uiosun  
    OP
       2020-07-29 12:31:51 +08:00
    @sunny1688 上“云”的话,是不是可以进行“快速提高短时负载”?

    譬如 CPU 100%,赶紧买 1 倍 CPU 做临时扩容。

    如果是的话,容器更多可以作为一种快速定位故障环节、防止灾难扩大的解决方案,和云相辅相成。

    如果不是……emmmm 哈哈,还请指教,没太接触过云这个概念
    dzdh
        24
    dzdh  
       2020-07-29 12:49:45 +08:00
    @uiosun 上云是加机器。加 cpu 还是要重启中断服务的吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     891 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 20:13 PVG 04:13 LAX 13:13 JFK 16:13
    Do have faith in what you're doing.
    ubao msn 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