有没有可能,将work进程, 改造成类似php-fpm, 可以跨项目使用

jieinternet

问题描述

公司托管的服务器, 配置48核心, 128g, 每台上有拆分的几十个项目模块, 模块之间通过http互调
现有模式是多项目共用1000个php-fpm

查询好久, 如果使用workman改造, 只能一个项目起一个master, 每个项目设定的work进程不能太多
因为流量不确定 ,日常上下波动3到5倍, 极端可能10倍, 每项目固定的work数, 问题较大, 无法应对随机突发流量

可不可以像php-fpm, 多项目共用所有work进程, 应对某些项目的突发流量

猜测可以在接收到请求后, 清空所有资源,变量等, 初始化一遍, 做到work进程无状态, 不知道有没有实现的可能性

注:
初始化的开销对我们不是很重要, 没有要求执行很快
尝试workman,是想利用多进程管理, 定时器,socket等, 以及异步处理能力, 以及将来可能有的协程, 简化系统设计, 对速度没过度追求

为此你搜索到了哪些方案及不适用的原因

查看了多种搜索结果
基本都是同系统中的多个子系统, 共用环境 . 由于模块众多, 分属不同团队, 代码管理等不太方便, 对我们不太适用
各模块升级,php版本升级等, 也不可能统一,

所以问下, 有没有可能将work进程改造成无状态, 单台起1000个进程, 供多个项目使用, 应对随机流量

519 2 1
2个回答

小W

workerman实现fastcgi协议?

软饭工程师

k8s 的自动扩缩容 服务非常契合你的需求,可以考虑下

  • jieinternet 2023-08-17

    架构太复杂了, 对运维要求能力较高, 由fpm模式切到k8s方案, 感觉不如fpm切到golang简单

  • jieinternet 2023-08-17

    切到golang都感觉有些变动太大, 看看workman能不能实现需求

🔝