我司竟然还在用 Apache 2.0 Handler,运维不敢快速切换到 php-fpm,但同意让我改一些 Apache/PHP 的配置。
项目月底就要上线,性能压力目前主要集中在并发上,所以我该怎么优化 Apache 2.0 Handler 呢?
Ps:
线上 32G 内存的服务器,觉得蛮大,本来准备直接调整 fpm 的生成方式、最大数量,结果猝不及防……
查了查“Apache 2.0 Handler 并发”,毫无结果。
1
hbolive 2020-07-28 14:45:41 +08:00
你这不还没上线吗?为啥不让调。。
|
2
NjcyNzMzNDQ3 2020-07-28 14:49:05 +08:00
如果压力在 apache 哪里,没啥好办法,甩锅给运维吧。
试试在 apche 前面套个 nginx,nginx 来做负载均衡带多个 apache,nginx 也可以开 proxy_cache 减少请求到户端的数量。 |
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 |
4
cbasil 2020-07-28 15:04:29 +08:00
没上线还不让调,怼死运维去
|
5
mahone3297 2020-07-28 15:11:29 +08:00
多开几个 apache,前端架一个 lb
|
6
AngryPanda 2020-07-28 15:12:44 +08:00
堆机器了
|
7
hasdream 2020-07-28 15:13:22 +08:00
linux 可以考虑把 apache 升到 2.4 然后使用 event 模式, 调优参考: http://mp.weixin.qq.com/s/eGGtBlXy0cYBFTO6AfF7dw
|
8
wangritian 2020-07-28 17:25:45 +08:00
apache 设置成多进程+多线程的工作模式,php 开启 opcache,mysql 热点数据同步到 redis
你还需要掌握一个压测工具,ab/webbench/wrk,一边优化一边确认结果 |
9
Evilk 2020-07-28 17:36:08 +08:00
还没上线,为啥不让调?
安装 fpm 很简单啊? |
10
sunny1688 2020-07-28 17:37:54 +08:00
为啥是运维管这些?
|
11
bin20060407 2020-07-28 17:55:06 +08:00
以前用的 php-fpm 配合 Apache 2.4,以为可以撑得住,结果发现不管咋调,还是会报进程数不够,换成 nginx,就没问题了
|
12
jifengg 2020-07-28 18:00:32 +08:00
既然有运维,那么就不要自己改!把你的需求提给运维。自己改了出问题是你的,而且你不也不熟悉么。运维坚持用 apache,那就只能提出需求让其解决了。
真的,别最后吃力不讨好。 |
13
JJstyle 2020-07-28 18:59:17 +08:00 via iPhone
可以开多个 apache,前面用 nginx 转发一下
|
14
uiosun OP (运维也是个开发同事,只是他负责我们公司运维工作,公司对这块看得比较重,不允许其他人——譬如我,来动容器)
前阵子带队把 ElementUI fork 到内网,又加了几个组件,领导可能是觉得做的不错,就突然说我来优化性能,我也很懵,但觉得没啥问题,反正我本职就是服务端。 结果现在运维卡住 Docker,不允许我去搞大动作,我就很炸裂了…… 现在,我正在跟运维商量把一些配置文件暴露给我,让我可以修改和重启容器,如果这都做不到,那我就直接找领导,说“我做不了这个活儿,请另请高明”了。 艾特各位大佬,嘿嘿。 @sunny1688 @jifengg @cbasil @hbolive @NjcyNzMzNDQ3 |
16
uiosun OP @mahone3297 感谢大佬,负载均衡有的,Apache 我改了配置,提升了 30 % 的线程数量,看效果如何
|
17
uiosun OP @wangritian 跟你讲个笑话,我们作为一个预估上万用户同时做写入业务的站,没用 Redis……(无语泪先流,我来的时候这个站已经基本做完了)
|
18
xw 2020-07-29 09:50:26 +08:00
写出实施方案,(预计)改前后效果对比,需要时间,反馈 /讨论决定是否 /如何处理
|
21
sunny1688 2020-07-29 11:26:11 +08:00
@uiosun 正式环境用 docker ?怎么玩起来的?搞不懂,我只是在开发环境用一下 docker,正式服想不出怎么用,
正式服安装 docker,mysql,redis,全部用 docker 容器?现在都上云了吧??求大佬解惑! |
22
uiosun OP @sunny1688 外包公司,用容器不用担心客户服务器的环境问题,其实内部还是没有封装。
之前在的公司自营产品比较强,可以跟你交流一下: 将数据库、Redis 、MongoDB 、Nginx 等套件,分别封装,对容器外暴露接口,这样所有的容器,都会被监控 RAM 、CPU 、进程数等指标,如果发现哪些容器有问题,立刻可以定位、重启和解决。 多容器(算是分布式?我没详细了解过),所以当某个环节的某部分容器宕机,其他容器可以正常执行业务,并不会出现“某个 Redis 容器崩了,整个缓存系统都崩了”的情况。 |