想实现的效果:想在thinkphp8的基础上不改变老项目实现与webman 并存
情况介绍:原项目 是用 thinkphp8 开发的 项目很大 ,现在用户端 经常出现 cpu 100% 打满的情况 ,如果说整体迁移到webman 会不习惯 并且 工程量比较大;
可行的 解决方案:
.部分高并发的 接口使用 webman 单独成立项目 开发 和 thinkphp 部署在 同一服务器,并通过 nginx 转发 ( 目前来讲最可行的 方案 相当于 webman 做微服务了 ,但是使得项目结构变复杂了)
待讨论的解决方案:
能不能实现在thinkphp 同一个项目下 使用 webman 使得在同一项目 结构下 thinkphp webman 切换
加机器。。
加机器 最省心 开启opcache 应该问题不大 增加webman会增加项目复杂度
重写需要改进的接口就行了,又简单又方便,硬集成在一起项目结构就复杂多了
也就是nginx 转发的那个方案 咯
你们多少qps呀 会导致cpu100%?
两千人次具体多少qps 没统计
2000人同时在线?大项目呀 不行就加机器吧 负载均衡最省心了 mysql连接数 加大
一个月的 特点时间特定场景才会 出现 其他时间很空闲
这里有一个难点 是 排查那些接口是并发的 使用cpu过多的 我觉得这是一个大难点 接口改成webman的很简单,分分钟的事,就是不好定位那些接口是导致cpu100%
宝塔日志有记录
那就好弄了 弄完少开点进程 可以试试cpu是否下降 如果真的下降了 那就OK了 如果没有就需要看看是不是框架的事了
其实只要定位好常用接口, 然后增加cache就可以了, 如果量还很大, 在考虑接入进来webman,
确实 缓存用的好 什么都 快 ( ̄ヘ ̄) ,但是 工作量太大了 ,每个 add update 都需要更新缓存
使用
thinkphp
往往不是cpu100%的主要原因,去排查分析一下是什么场景下多少QPS的时候cpu100%了,找到原因是因为代码不合理
还是服务器性能不够
才可以更精确解决问题,不然即使整个项目都迁移webman也不一定能提升多少性能利用率我现在公司用webman写了个websocket服务端,客户端那边跟ddos似的,8核100来人就顶不住了,cpu100%
100 人都顶不住吗 我们 thinkphp 是 12核 http 2000 人次 左右顶不住 真实qps 也就300 - 400
webman 加他的 纯种 sql 也顶不住吗 ,在文档看 webman 加他 sql 性能 看上去很牛逼
不用 orm 的话
techempower压测显示webman不管在纯文本、数据库查询、数据库更新等所有指标都高于gin近一倍左右。
如果你的结果不一样,可能是因为你在webman中使用了ORM带来了较大的性能损失,可尝试 webman+原生PDO 与 gin+原生SQL 比较。